1/// These are automatically generated checked C++ bindings for isl.
2///
3/// isl is a library for computing with integer sets and maps described by
4/// Presburger formulas. On top of this, isl provides various tools for
5/// polyhedral compilation, ranging from dependence analysis over scheduling
6/// to AST generation.
7
8#ifndef ISL_CPP_CHECKED
9#define ISL_CPP_CHECKED
10
11#include <isl/val.h>
12#include <isl/aff.h>
13#include <isl/set.h>
14#include <isl/space.h>
15#include <isl/id.h>
16#include <isl/map.h>
17#include <isl/vec.h>
18#include <isl/ilp.h>
19#include <isl/union_set.h>
20#include <isl/union_map.h>
21#include <isl/flow.h>
22#include <isl/schedule.h>
23#include <isl/schedule_node.h>
24#include <isl/ast_build.h>
25#include <isl/constraint.h>
26#include <isl/polynomial.h>
27#include <isl/mat.h>
28#include <isl/fixed_box.h>
29
30#include <stdio.h>
31#include <stdlib.h>
32
33#include <functional>
34#include <string>
35
36namespace isl {
37inline namespace noexceptions {
38
39#define ISLPP_STRINGIZE_(X) #X
40#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
41
42#define ISLPP_ASSERT(test, message) \
43 do { \
44 if (test) \
45 break; \
46 fputs("Assertion \"" #test "\" failed at " __FILE__ \
47 ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
48 stderr); \
49 abort(); \
50 } while (0)
51
52class boolean {
53private:
54 mutable bool checked = false;
55 isl_bool val;
56
57 friend boolean manage(isl_bool val);
58 boolean(isl_bool val): val(val) {}
59public:
60 boolean()
61 : val(isl_bool_error) {}
62 ~boolean() {
63 // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
64 }
65
66 /* implicit */ boolean(bool val)
67 : val(val ? isl_bool_true : isl_bool_false) {}
68
69 bool is_error() const { checked = true; return val == isl_bool_error; }
70 bool is_false() const { checked = true; return val == isl_bool_false; }
71 bool is_true() const { checked = true; return val == isl_bool_true; }
72
73 operator bool() const {
74 // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked error state");
75 ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
76 return is_true();
77 }
78
79 boolean operator!() const {
80 if (is_error())
81 return *this;
82 return !is_true();
83 }
84};
85
86inline boolean manage(isl_bool val) {
87 return boolean(val);
88}
89
90class ctx {
91 isl_ctx *ptr;
92public:
93 /* implicit */ ctx(isl_ctx *ctx)
94 : ptr(ctx) {}
95 isl_ctx *release() {
96 auto tmp = ptr;
97 ptr = nullptr;
98 return tmp;
99 }
100 isl_ctx *get() {
101 return ptr;
102 }
103};
104
105/* Class encapsulating an isl_stat value.
106 */
107class stat {
108private:
109 mutable bool checked = false;
110 isl_stat val;
111
112 friend stat manage(isl_stat val);
113public:
114 constexpr stat(isl_stat val) : val(val) {}
115 static stat ok() {
116 return stat(isl_stat_ok);
117 }
118 static stat error() {
119 return stat(isl_stat_error);
120 }
121 stat() : val(isl_stat_error) {}
122 ~stat() {
123 // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
124 }
125
126 isl_stat release() {
127 checked = true;
128 return val;
129 }
130
131 bool is_error() const {
132 checked = true;
133 return val == isl_stat_error;
134 }
135 bool is_ok() const {
136 checked = true;
137 return val == isl_stat_ok;
138 }
139};
140
141
142inline stat manage(isl_stat val)
143{
144 return stat(val);
145}
146
147enum class dim {
148 cst = isl_dim_cst,
149 param = isl_dim_param,
150 in = isl_dim_in,
151 out = isl_dim_out,
152 set = isl_dim_set,
153 div = isl_dim_div,
154 all = isl_dim_all
155};
156
157}
158} // namespace isl
159
160namespace isl {
161
162inline namespace noexceptions {
163
164// forward declarations
165class aff;
166class aff_list;
167class ast_build;
168class ast_expr;
169class ast_expr_list;
170class ast_node;
171class ast_node_list;
172class basic_map;
173class basic_map_list;
174class basic_set;
175class basic_set_list;
176class constraint;
177class constraint_list;
178class fixed_box;
179class id;
180class id_list;
181class id_to_ast_expr;
182class local_space;
183class map;
184class map_list;
185class mat;
186class multi_aff;
187class multi_pw_aff;
188class multi_union_pw_aff;
189class multi_val;
190class point;
191class pw_aff;
192class pw_aff_list;
193class pw_multi_aff;
194class pw_multi_aff_list;
195class pw_qpolynomial;
196class pw_qpolynomial_fold_list;
197class pw_qpolynomial_list;
198class qpolynomial;
199class schedule;
200class schedule_constraints;
201class schedule_node;
202class set;
203class set_list;
204class space;
205class term;
206class union_access_info;
207class union_flow;
208class union_map;
209class union_map_list;
210class union_pw_aff;
211class union_pw_aff_list;
212class union_pw_multi_aff;
213class union_pw_multi_aff_list;
214class union_pw_qpolynomial;
215class union_set;
216class union_set_list;
217class val;
218class val_list;
219class vec;
220
221// declarations for isl::aff
222inline aff manage(__isl_take isl_aff *ptr);
223inline aff manage_copy(__isl_keep isl_aff *ptr);
224
225class aff {
226 friend inline aff manage(__isl_take isl_aff *ptr);
227 friend inline aff manage_copy(__isl_keep isl_aff *ptr);
228
229 isl_aff *ptr = nullptr;
230
231 inline explicit aff(__isl_take isl_aff *ptr);
232
233public:
234 inline /* implicit */ aff();
235 inline /* implicit */ aff(const aff &obj);
236 inline /* implicit */ aff(std::nullptr_t);
237 inline explicit aff(local_space ls);
238 inline explicit aff(local_space ls, val val);
239 inline explicit aff(ctx ctx, const std::string &str);
240 inline aff &operator=(aff obj);
241 inline ~aff();
242 inline __isl_give isl_aff *copy() const &;
243 inline __isl_give isl_aff *copy() && = delete;
244 inline __isl_keep isl_aff *get() const;
245 inline __isl_give isl_aff *release();
246 inline bool is_null() const;
247 inline explicit operator bool() const;
248 inline ctx get_ctx() const;
249 inline std::string to_str() const;
250 inline void dump() const;
251
252 inline aff add(aff aff2) const;
253 inline aff add_coefficient_si(isl::dim type, int pos, int v) const;
254 inline aff add_coefficient_val(isl::dim type, int pos, val v) const;
255 inline aff add_constant_num_si(int v) const;
256 inline aff add_constant_si(int v) const;
257 inline aff add_constant_val(val v) const;
258 inline aff add_dims(isl::dim type, unsigned int n) const;
259 inline aff align_params(space model) const;
260 inline aff ceil() const;
261 inline int coefficient_sgn(isl::dim type, int pos) const;
262 inline int dim(isl::dim type) const;
263 inline aff div(aff aff2) const;
264 inline aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
265 inline basic_set eq_basic_set(aff aff2) const;
266 inline set eq_set(aff aff2) const;
267 inline val eval(point pnt) const;
268 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
269 inline aff floor() const;
270 inline aff from_range() const;
271 inline basic_set ge_basic_set(aff aff2) const;
272 inline set ge_set(aff aff2) const;
273 inline val get_coefficient_val(isl::dim type, int pos) const;
274 inline val get_constant_val() const;
275 inline val get_denominator_val() const;
276 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
277 inline aff get_div(int pos) const;
278 inline local_space get_domain_local_space() const;
279 inline space get_domain_space() const;
280 inline uint32_t get_hash() const;
281 inline local_space get_local_space() const;
282 inline space get_space() const;
283 inline aff gist(set context) const;
284 inline aff gist_params(set context) const;
285 inline basic_set gt_basic_set(aff aff2) const;
286 inline set gt_set(aff aff2) const;
287 inline aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
288 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
289 inline boolean is_cst() const;
290 inline boolean is_nan() const;
291 inline basic_set le_basic_set(aff aff2) const;
292 inline set le_set(aff aff2) const;
293 inline basic_set lt_basic_set(aff aff2) const;
294 inline set lt_set(aff aff2) const;
295 inline aff mod(val mod) const;
296 inline aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
297 inline aff mul(aff aff2) const;
298 static inline aff nan_on_domain(local_space ls);
299 inline set ne_set(aff aff2) const;
300 inline aff neg() const;
301 inline basic_set neg_basic_set() const;
302 static inline aff param_on_domain_space_id(space space, id id);
303 inline boolean plain_is_equal(const aff &aff2) const;
304 inline boolean plain_is_zero() const;
305 inline aff project_domain_on_params() const;
306 inline aff pullback(multi_aff ma) const;
307 inline aff pullback_aff(aff aff2) const;
308 inline aff scale(val v) const;
309 inline aff scale_down(val v) const;
310 inline aff scale_down_ui(unsigned int f) const;
311 inline aff set_coefficient_si(isl::dim type, int pos, int v) const;
312 inline aff set_coefficient_val(isl::dim type, int pos, val v) const;
313 inline aff set_constant_si(int v) const;
314 inline aff set_constant_val(val v) const;
315 inline aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
316 inline aff set_tuple_id(isl::dim type, id id) const;
317 inline aff sub(aff aff2) const;
318 static inline aff var_on_domain(local_space ls, isl::dim type, unsigned int pos);
319 inline basic_set zero_basic_set() const;
320};
321
322// declarations for isl::aff_list
323inline aff_list manage(__isl_take isl_aff_list *ptr);
324inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
325
326class aff_list {
327 friend inline aff_list manage(__isl_take isl_aff_list *ptr);
328 friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
329
330 isl_aff_list *ptr = nullptr;
331
332 inline explicit aff_list(__isl_take isl_aff_list *ptr);
333
334public:
335 inline /* implicit */ aff_list();
336 inline /* implicit */ aff_list(const aff_list &obj);
337 inline /* implicit */ aff_list(std::nullptr_t);
338 inline aff_list &operator=(aff_list obj);
339 inline ~aff_list();
340 inline __isl_give isl_aff_list *copy() const &;
341 inline __isl_give isl_aff_list *copy() && = delete;
342 inline __isl_keep isl_aff_list *get() const;
343 inline __isl_give isl_aff_list *release();
344 inline bool is_null() const;
345 inline explicit operator bool() const;
346 inline ctx get_ctx() const;
347 inline void dump() const;
348
349 inline aff_list add(aff el) const;
350 static inline aff_list alloc(ctx ctx, int n);
351 inline aff_list concat(aff_list list2) const;
352 inline aff_list drop(unsigned int first, unsigned int n) const;
353 inline stat foreach(const std::function<stat(aff)> &fn) const;
354 static inline aff_list from_aff(aff el);
355 inline aff get_aff(int index) const;
356 inline aff get_at(int index) const;
357 inline aff_list insert(unsigned int pos, aff el) const;
358 inline int n_aff() const;
359 inline aff_list reverse() const;
360 inline aff_list set_aff(int index, aff el) const;
361 inline int size() const;
362 inline aff_list swap(unsigned int pos1, unsigned int pos2) const;
363};
364
365// declarations for isl::ast_build
366inline ast_build manage(__isl_take isl_ast_build *ptr);
367inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
368
369class ast_build {
370 friend inline ast_build manage(__isl_take isl_ast_build *ptr);
371 friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
372
373 isl_ast_build *ptr = nullptr;
374
375 inline explicit ast_build(__isl_take isl_ast_build *ptr);
376
377public:
378 inline /* implicit */ ast_build();
379 inline /* implicit */ ast_build(const ast_build &obj);
380 inline /* implicit */ ast_build(std::nullptr_t);
381 inline explicit ast_build(ctx ctx);
382 inline ast_build &operator=(ast_build obj);
383 inline ~ast_build();
384 inline __isl_give isl_ast_build *copy() const &;
385 inline __isl_give isl_ast_build *copy() && = delete;
386 inline __isl_keep isl_ast_build *get() const;
387 inline __isl_give isl_ast_build *release();
388 inline bool is_null() const;
389 inline explicit operator bool() const;
390 inline ctx get_ctx() const;
391
392 inline ast_expr access_from(pw_multi_aff pma) const;
393 inline ast_expr access_from(multi_pw_aff mpa) const;
394 inline ast_node ast_from_schedule(union_map schedule) const;
395 inline ast_expr call_from(pw_multi_aff pma) const;
396 inline ast_expr call_from(multi_pw_aff mpa) const;
397 inline ast_expr expr_from(set set) const;
398 inline ast_expr expr_from(pw_aff pa) const;
399 static inline ast_build from_context(set set);
400 inline union_map get_schedule() const;
401 inline space get_schedule_space() const;
402 inline ast_node node_from_schedule(schedule schedule) const;
403 inline ast_node node_from_schedule_map(union_map schedule) const;
404 inline ast_build restrict(set set) const;
405};
406
407// declarations for isl::ast_expr
408inline ast_expr manage(__isl_take isl_ast_expr *ptr);
409inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
410
411class ast_expr {
412 friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
413 friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
414
415 isl_ast_expr *ptr = nullptr;
416
417 inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
418
419public:
420 inline /* implicit */ ast_expr();
421 inline /* implicit */ ast_expr(const ast_expr &obj);
422 inline /* implicit */ ast_expr(std::nullptr_t);
423 inline ast_expr &operator=(ast_expr obj);
424 inline ~ast_expr();
425 inline __isl_give isl_ast_expr *copy() const &;
426 inline __isl_give isl_ast_expr *copy() && = delete;
427 inline __isl_keep isl_ast_expr *get() const;
428 inline __isl_give isl_ast_expr *release();
429 inline bool is_null() const;
430 inline explicit operator bool() const;
431 inline ctx get_ctx() const;
432 inline std::string to_str() const;
433 inline void dump() const;
434
435 inline ast_expr access(ast_expr_list indices) const;
436 inline ast_expr add(ast_expr expr2) const;
437 inline ast_expr address_of() const;
438 inline ast_expr call(ast_expr_list arguments) const;
439 inline ast_expr div(ast_expr expr2) const;
440 inline ast_expr eq(ast_expr expr2) const;
441 static inline ast_expr from_id(id id);
442 static inline ast_expr from_val(val v);
443 inline ast_expr ge(ast_expr expr2) const;
444 inline id get_id() const;
445 inline ast_expr get_op_arg(int pos) const;
446 inline int get_op_n_arg() const;
447 inline val get_val() const;
448 inline ast_expr gt(ast_expr expr2) const;
449 inline boolean is_equal(const ast_expr &expr2) const;
450 inline ast_expr le(ast_expr expr2) const;
451 inline ast_expr lt(ast_expr expr2) const;
452 inline ast_expr mul(ast_expr expr2) const;
453 inline ast_expr neg() const;
454 inline ast_expr pdiv_q(ast_expr expr2) const;
455 inline ast_expr pdiv_r(ast_expr expr2) const;
456 inline ast_expr set_op_arg(int pos, ast_expr arg) const;
457 inline ast_expr sub(ast_expr expr2) const;
458 inline ast_expr substitute_ids(id_to_ast_expr id2expr) const;
459 inline std::string to_C_str() const;
460};
461
462// declarations for isl::ast_expr_list
463inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
464inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
465
466class ast_expr_list {
467 friend inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
468 friend inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
469
470 isl_ast_expr_list *ptr = nullptr;
471
472 inline explicit ast_expr_list(__isl_take isl_ast_expr_list *ptr);
473
474public:
475 inline /* implicit */ ast_expr_list();
476 inline /* implicit */ ast_expr_list(const ast_expr_list &obj);
477 inline /* implicit */ ast_expr_list(std::nullptr_t);
478 inline ast_expr_list &operator=(ast_expr_list obj);
479 inline ~ast_expr_list();
480 inline __isl_give isl_ast_expr_list *copy() const &;
481 inline __isl_give isl_ast_expr_list *copy() && = delete;
482 inline __isl_keep isl_ast_expr_list *get() const;
483 inline __isl_give isl_ast_expr_list *release();
484 inline bool is_null() const;
485 inline explicit operator bool() const;
486 inline ctx get_ctx() const;
487 inline void dump() const;
488
489 inline ast_expr_list add(ast_expr el) const;
490 static inline ast_expr_list alloc(ctx ctx, int n);
491 inline ast_expr_list concat(ast_expr_list list2) const;
492 inline ast_expr_list drop(unsigned int first, unsigned int n) const;
493 inline stat foreach(const std::function<stat(ast_expr)> &fn) const;
494 static inline ast_expr_list from_ast_expr(ast_expr el);
495 inline ast_expr get_ast_expr(int index) const;
496 inline ast_expr get_at(int index) const;
497 inline ast_expr_list insert(unsigned int pos, ast_expr el) const;
498 inline int n_ast_expr() const;
499 inline ast_expr_list reverse() const;
500 inline ast_expr_list set_ast_expr(int index, ast_expr el) const;
501 inline int size() const;
502 inline ast_expr_list swap(unsigned int pos1, unsigned int pos2) const;
503};
504
505// declarations for isl::ast_node
506inline ast_node manage(__isl_take isl_ast_node *ptr);
507inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
508
509class ast_node {
510 friend inline ast_node manage(__isl_take isl_ast_node *ptr);
511 friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
512
513 isl_ast_node *ptr = nullptr;
514
515 inline explicit ast_node(__isl_take isl_ast_node *ptr);
516
517public:
518 inline /* implicit */ ast_node();
519 inline /* implicit */ ast_node(const ast_node &obj);
520 inline /* implicit */ ast_node(std::nullptr_t);
521 inline ast_node &operator=(ast_node obj);
522 inline ~ast_node();
523 inline __isl_give isl_ast_node *copy() const &;
524 inline __isl_give isl_ast_node *copy() && = delete;
525 inline __isl_keep isl_ast_node *get() const;
526 inline __isl_give isl_ast_node *release();
527 inline bool is_null() const;
528 inline explicit operator bool() const;
529 inline ctx get_ctx() const;
530 inline std::string to_str() const;
531 inline void dump() const;
532
533 static inline ast_node alloc_user(ast_expr expr);
534 inline ast_node_list block_get_children() const;
535 inline ast_node for_get_body() const;
536 inline ast_expr for_get_cond() const;
537 inline ast_expr for_get_inc() const;
538 inline ast_expr for_get_init() const;
539 inline ast_expr for_get_iterator() const;
540 inline boolean for_is_degenerate() const;
541 inline id get_annotation() const;
542 inline ast_expr if_get_cond() const;
543 inline ast_node if_get_else() const;
544 inline ast_node if_get_then() const;
545 inline boolean if_has_else() const;
546 inline id mark_get_id() const;
547 inline ast_node mark_get_node() const;
548 inline ast_node set_annotation(id annotation) const;
549 inline std::string to_C_str() const;
550 inline ast_expr user_get_expr() const;
551};
552
553// declarations for isl::ast_node_list
554inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
555inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
556
557class ast_node_list {
558 friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
559 friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
560
561 isl_ast_node_list *ptr = nullptr;
562
563 inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
564
565public:
566 inline /* implicit */ ast_node_list();
567 inline /* implicit */ ast_node_list(const ast_node_list &obj);
568 inline /* implicit */ ast_node_list(std::nullptr_t);
569 inline ast_node_list &operator=(ast_node_list obj);
570 inline ~ast_node_list();
571 inline __isl_give isl_ast_node_list *copy() const &;
572 inline __isl_give isl_ast_node_list *copy() && = delete;
573 inline __isl_keep isl_ast_node_list *get() const;
574 inline __isl_give isl_ast_node_list *release();
575 inline bool is_null() const;
576 inline explicit operator bool() const;
577 inline ctx get_ctx() const;
578 inline void dump() const;
579
580 inline ast_node_list add(ast_node el) const;
581 static inline ast_node_list alloc(ctx ctx, int n);
582 inline ast_node_list concat(ast_node_list list2) const;
583 inline ast_node_list drop(unsigned int first, unsigned int n) const;
584 inline stat foreach(const std::function<stat(ast_node)> &fn) const;
585 static inline ast_node_list from_ast_node(ast_node el);
586 inline ast_node get_ast_node(int index) const;
587 inline ast_node get_at(int index) const;
588 inline ast_node_list insert(unsigned int pos, ast_node el) const;
589 inline int n_ast_node() const;
590 inline ast_node_list reverse() const;
591 inline ast_node_list set_ast_node(int index, ast_node el) const;
592 inline int size() const;
593 inline ast_node_list swap(unsigned int pos1, unsigned int pos2) const;
594};
595
596// declarations for isl::basic_map
597inline basic_map manage(__isl_take isl_basic_map *ptr);
598inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
599
600class basic_map {
601 friend inline basic_map manage(__isl_take isl_basic_map *ptr);
602 friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
603
604 isl_basic_map *ptr = nullptr;
605
606 inline explicit basic_map(__isl_take isl_basic_map *ptr);
607
608public:
609 inline /* implicit */ basic_map();
610 inline /* implicit */ basic_map(const basic_map &obj);
611 inline /* implicit */ basic_map(std::nullptr_t);
612 inline explicit basic_map(ctx ctx, const std::string &str);
613 inline basic_map &operator=(basic_map obj);
614 inline ~basic_map();
615 inline __isl_give isl_basic_map *copy() const &;
616 inline __isl_give isl_basic_map *copy() && = delete;
617 inline __isl_keep isl_basic_map *get() const;
618 inline __isl_give isl_basic_map *release();
619 inline bool is_null() const;
620 inline explicit operator bool() const;
621 inline ctx get_ctx() const;
622 inline std::string to_str() const;
623 inline void dump() const;
624
625 inline basic_map add_constraint(constraint constraint) const;
626 inline basic_map add_dims(isl::dim type, unsigned int n) const;
627 inline basic_map affine_hull() const;
628 inline basic_map align_params(space model) const;
629 inline basic_map apply_domain(basic_map bmap2) const;
630 inline basic_map apply_range(basic_map bmap2) const;
631 inline boolean can_curry() const;
632 inline boolean can_uncurry() const;
633 inline boolean can_zip() const;
634 inline basic_map curry() const;
635 inline basic_set deltas() const;
636 inline basic_map deltas_map() const;
637 inline basic_map detect_equalities() const;
638 inline unsigned int dim(isl::dim type) const;
639 inline basic_set domain() const;
640 inline basic_map domain_map() const;
641 inline basic_map domain_product(basic_map bmap2) const;
642 inline basic_map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
643 inline basic_map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
644 inline basic_map drop_unused_params() const;
645 inline basic_map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
646 static inline basic_map empty(space space);
647 static inline basic_map equal(space dim, unsigned int n_equal);
648 inline mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
649 inline basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
650 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
651 inline basic_map fix_si(isl::dim type, unsigned int pos, int value) const;
652 inline basic_map fix_val(isl::dim type, unsigned int pos, val v) const;
653 inline basic_map flat_product(basic_map bmap2) const;
654 inline basic_map flat_range_product(basic_map bmap2) const;
655 inline basic_map flatten() const;
656 inline basic_map flatten_domain() const;
657 inline basic_map flatten_range() const;
658 inline stat foreach_constraint(const std::function<stat(constraint)> &fn) const;
659 static inline basic_map from_aff(aff aff);
660 static inline basic_map from_aff_list(space domain_space, aff_list list);
661 static inline basic_map from_constraint(constraint constraint);
662 static inline basic_map from_domain(basic_set bset);
663 static inline basic_map from_domain_and_range(basic_set domain, basic_set range);
664 static inline basic_map from_multi_aff(multi_aff maff);
665 static inline basic_map from_qpolynomial(qpolynomial qp);
666 static inline basic_map from_range(basic_set bset);
667 inline constraint_list get_constraint_list() const;
668 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
669 inline aff get_div(int pos) const;
670 inline local_space get_local_space() const;
671 inline space get_space() const;
672 inline std::string get_tuple_name(isl::dim type) const;
673 inline basic_map gist(basic_map context) const;
674 inline basic_map gist_domain(basic_set context) const;
675 inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
676 static inline basic_map identity(space dim);
677 inline boolean image_is_bounded() const;
678 inline mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
679 inline basic_map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
680 inline basic_map intersect(basic_map bmap2) const;
681 inline basic_map intersect_domain(basic_set bset) const;
682 inline basic_map intersect_range(basic_set bset) const;
683 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
684 inline boolean is_disjoint(const basic_map &bmap2) const;
685 inline boolean is_empty() const;
686 inline boolean is_equal(const basic_map &bmap2) const;
687 inline boolean is_rational() const;
688 inline boolean is_single_valued() const;
689 inline boolean is_strict_subset(const basic_map &bmap2) const;
690 inline boolean is_subset(const basic_map &bmap2) const;
691 inline boolean is_universe() const;
692 static inline basic_map less_at(space dim, unsigned int pos);
693 inline map lexmax() const;
694 inline map lexmin() const;
695 inline pw_multi_aff lexmin_pw_multi_aff() const;
696 inline basic_map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
697 static inline basic_map more_at(space dim, unsigned int pos);
698 inline basic_map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
699 inline int n_constraint() const;
700 static inline basic_map nat_universe(space dim);
701 inline basic_map neg() const;
702 inline basic_map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
703 inline basic_map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
704 inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
705 inline boolean plain_is_empty() const;
706 inline boolean plain_is_universe() const;
707 inline basic_map preimage_domain_multi_aff(multi_aff ma) const;
708 inline basic_map preimage_range_multi_aff(multi_aff ma) const;
709 inline basic_map product(basic_map bmap2) const;
710 inline basic_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
711 inline basic_set range() const;
712 inline basic_map range_map() const;
713 inline basic_map range_product(basic_map bmap2) const;
714 inline basic_map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
715 inline basic_map remove_divs() const;
716 inline basic_map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
717 inline basic_map remove_redundancies() const;
718 inline basic_map reverse() const;
719 inline basic_map sample() const;
720 inline basic_map set_tuple_id(isl::dim type, id id) const;
721 inline basic_map set_tuple_name(isl::dim type, const std::string &s) const;
722 inline basic_map sum(basic_map bmap2) const;
723 inline basic_map uncurry() const;
724 inline map unite(basic_map bmap2) const;
725 static inline basic_map universe(space space);
726 inline basic_map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
727 inline basic_set wrap() const;
728 inline basic_map zip() const;
729};
730
731// declarations for isl::basic_map_list
732inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
733inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
734
735class basic_map_list {
736 friend inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
737 friend inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
738
739 isl_basic_map_list *ptr = nullptr;
740
741 inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
742
743public:
744 inline /* implicit */ basic_map_list();
745 inline /* implicit */ basic_map_list(const basic_map_list &obj);
746 inline /* implicit */ basic_map_list(std::nullptr_t);
747 inline basic_map_list &operator=(basic_map_list obj);
748 inline ~basic_map_list();
749 inline __isl_give isl_basic_map_list *copy() const &;
750 inline __isl_give isl_basic_map_list *copy() && = delete;
751 inline __isl_keep isl_basic_map_list *get() const;
752 inline __isl_give isl_basic_map_list *release();
753 inline bool is_null() const;
754 inline explicit operator bool() const;
755 inline ctx get_ctx() const;
756 inline void dump() const;
757
758 inline basic_map_list add(basic_map el) const;
759 static inline basic_map_list alloc(ctx ctx, int n);
760 inline basic_map_list concat(basic_map_list list2) const;
761 inline basic_map_list drop(unsigned int first, unsigned int n) const;
762 inline stat foreach(const std::function<stat(basic_map)> &fn) const;
763 static inline basic_map_list from_basic_map(basic_map el);
764 inline basic_map get_at(int index) const;
765 inline basic_map get_basic_map(int index) const;
766 inline basic_map_list insert(unsigned int pos, basic_map el) const;
767 inline int n_basic_map() const;
768 inline basic_map_list reverse() const;
769 inline basic_map_list set_basic_map(int index, basic_map el) const;
770 inline int size() const;
771 inline basic_map_list swap(unsigned int pos1, unsigned int pos2) const;
772};
773
774// declarations for isl::basic_set
775inline basic_set manage(__isl_take isl_basic_set *ptr);
776inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
777
778class basic_set {
779 friend inline basic_set manage(__isl_take isl_basic_set *ptr);
780 friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
781
782 isl_basic_set *ptr = nullptr;
783
784 inline explicit basic_set(__isl_take isl_basic_set *ptr);
785
786public:
787 inline /* implicit */ basic_set();
788 inline /* implicit */ basic_set(const basic_set &obj);
789 inline /* implicit */ basic_set(std::nullptr_t);
790 inline explicit basic_set(ctx ctx, const std::string &str);
791 inline /* implicit */ basic_set(point pnt);
792 inline basic_set &operator=(basic_set obj);
793 inline ~basic_set();
794 inline __isl_give isl_basic_set *copy() const &;
795 inline __isl_give isl_basic_set *copy() && = delete;
796 inline __isl_keep isl_basic_set *get() const;
797 inline __isl_give isl_basic_set *release();
798 inline bool is_null() const;
799 inline explicit operator bool() const;
800 inline ctx get_ctx() const;
801 inline std::string to_str() const;
802 inline void dump() const;
803
804 inline basic_set affine_hull() const;
805 inline basic_set align_params(space model) const;
806 inline basic_set apply(basic_map bmap) const;
807 static inline basic_set box_from_points(point pnt1, point pnt2);
808 inline basic_set coefficients() const;
809 inline basic_set detect_equalities() const;
810 inline unsigned int dim(isl::dim type) const;
811 inline val dim_max_val(int pos) const;
812 inline basic_set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
813 inline basic_set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
814 inline basic_set drop_unused_params() const;
815 inline basic_set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
816 static inline basic_set empty(space space);
817 inline mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
818 inline basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
819 inline basic_set fix_val(isl::dim type, unsigned int pos, val v) const;
820 inline basic_set flat_product(basic_set bset2) const;
821 inline basic_set flatten() const;
822 inline stat foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<stat(constraint, constraint, basic_set)> &fn) const;
823 inline stat foreach_constraint(const std::function<stat(constraint)> &fn) const;
824 static inline basic_set from_constraint(constraint constraint);
825 static inline basic_set from_multi_aff(multi_aff ma);
826 inline basic_set from_params() const;
827 inline constraint_list get_constraint_list() const;
828 inline id get_dim_id(isl::dim type, unsigned int pos) const;
829 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
830 inline aff get_div(int pos) const;
831 inline local_space get_local_space() const;
832 inline space get_space() const;
833 inline std::string get_tuple_name() const;
834 inline basic_set gist(basic_set context) const;
835 inline mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
836 inline basic_set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
837 inline basic_set intersect(basic_set bset2) const;
838 inline basic_set intersect_params(basic_set bset2) const;
839 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
840 inline boolean is_bounded() const;
841 inline boolean is_disjoint(const basic_set &bset2) const;
842 inline boolean is_empty() const;
843 inline boolean is_equal(const basic_set &bset2) const;
844 inline int is_rational() const;
845 inline boolean is_subset(const basic_set &bset2) const;
846 inline boolean is_universe() const;
847 inline boolean is_wrapping() const;
848 inline set lexmax() const;
849 inline set lexmin() const;
850 inline basic_set lower_bound_val(isl::dim type, unsigned int pos, val value) const;
851 inline val max_val(const aff &obj) const;
852 inline basic_set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
853 inline int n_constraint() const;
854 inline unsigned int n_dim() const;
855 static inline basic_set nat_universe(space dim);
856 inline basic_set neg() const;
857 inline basic_set params() const;
858 inline boolean plain_is_empty() const;
859 inline boolean plain_is_equal(const basic_set &bset2) const;
860 inline boolean plain_is_universe() const;
861 static inline basic_set positive_orthant(space space);
862 inline basic_set preimage_multi_aff(multi_aff ma) const;
863 inline basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
864 inline mat reduced_basis() const;
865 inline basic_set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
866 inline basic_set remove_divs() const;
867 inline basic_set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
868 inline basic_set remove_redundancies() const;
869 inline basic_set remove_unknown_divs() const;
870 inline basic_set sample() const;
871 inline point sample_point() const;
872 inline basic_set set_tuple_id(id id) const;
873 inline basic_set set_tuple_name(const std::string &s) const;
874 inline basic_set solutions() const;
875 inline set unite(basic_set bset2) const;
876 static inline basic_set universe(space space);
877 inline basic_map unwrap() const;
878 inline basic_set upper_bound_val(isl::dim type, unsigned int pos, val value) const;
879};
880
881// declarations for isl::basic_set_list
882inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
883inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
884
885class basic_set_list {
886 friend inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
887 friend inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
888
889 isl_basic_set_list *ptr = nullptr;
890
891 inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
892
893public:
894 inline /* implicit */ basic_set_list();
895 inline /* implicit */ basic_set_list(const basic_set_list &obj);
896 inline /* implicit */ basic_set_list(std::nullptr_t);
897 inline basic_set_list &operator=(basic_set_list obj);
898 inline ~basic_set_list();
899 inline __isl_give isl_basic_set_list *copy() const &;
900 inline __isl_give isl_basic_set_list *copy() && = delete;
901 inline __isl_keep isl_basic_set_list *get() const;
902 inline __isl_give isl_basic_set_list *release();
903 inline bool is_null() const;
904 inline explicit operator bool() const;
905 inline ctx get_ctx() const;
906 inline void dump() const;
907
908 inline basic_set_list add(basic_set el) const;
909 static inline basic_set_list alloc(ctx ctx, int n);
910 inline basic_set_list coefficients() const;
911 inline basic_set_list concat(basic_set_list list2) const;
912 inline basic_set_list drop(unsigned int first, unsigned int n) const;
913 inline stat foreach(const std::function<stat(basic_set)> &fn) const;
914 static inline basic_set_list from_basic_set(basic_set el);
915 inline basic_set get_at(int index) const;
916 inline basic_set get_basic_set(int index) const;
917 inline basic_set_list insert(unsigned int pos, basic_set el) const;
918 inline int n_basic_set() const;
919 inline basic_set_list reverse() const;
920 inline basic_set_list set_basic_set(int index, basic_set el) const;
921 inline int size() const;
922 inline basic_set_list swap(unsigned int pos1, unsigned int pos2) const;
923};
924
925// declarations for isl::constraint
926inline constraint manage(__isl_take isl_constraint *ptr);
927inline constraint manage_copy(__isl_keep isl_constraint *ptr);
928
929class constraint {
930 friend inline constraint manage(__isl_take isl_constraint *ptr);
931 friend inline constraint manage_copy(__isl_keep isl_constraint *ptr);
932
933 isl_constraint *ptr = nullptr;
934
935 inline explicit constraint(__isl_take isl_constraint *ptr);
936
937public:
938 inline /* implicit */ constraint();
939 inline /* implicit */ constraint(const constraint &obj);
940 inline /* implicit */ constraint(std::nullptr_t);
941 inline constraint &operator=(constraint obj);
942 inline ~constraint();
943 inline __isl_give isl_constraint *copy() const &;
944 inline __isl_give isl_constraint *copy() && = delete;
945 inline __isl_keep isl_constraint *get() const;
946 inline __isl_give isl_constraint *release();
947 inline bool is_null() const;
948 inline explicit operator bool() const;
949 inline ctx get_ctx() const;
950 inline void dump() const;
951
952 static inline constraint alloc_equality(local_space ls);
953 static inline constraint alloc_inequality(local_space ls);
954 inline int cmp_last_non_zero(const constraint &c2) const;
955 inline aff get_aff() const;
956 inline aff get_bound(isl::dim type, int pos) const;
957 inline val get_coefficient_val(isl::dim type, int pos) const;
958 inline val get_constant_val() const;
959 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
960 inline aff get_div(int pos) const;
961 inline local_space get_local_space() const;
962 inline space get_space() const;
963 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
964 inline int is_div_constraint() const;
965 inline boolean is_lower_bound(isl::dim type, unsigned int pos) const;
966 inline boolean is_upper_bound(isl::dim type, unsigned int pos) const;
967 inline int plain_cmp(const constraint &c2) const;
968 inline constraint set_coefficient_si(isl::dim type, int pos, int v) const;
969 inline constraint set_coefficient_val(isl::dim type, int pos, val v) const;
970 inline constraint set_constant_si(int v) const;
971 inline constraint set_constant_val(val v) const;
972};
973
974// declarations for isl::constraint_list
975inline constraint_list manage(__isl_take isl_constraint_list *ptr);
976inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
977
978class constraint_list {
979 friend inline constraint_list manage(__isl_take isl_constraint_list *ptr);
980 friend inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
981
982 isl_constraint_list *ptr = nullptr;
983
984 inline explicit constraint_list(__isl_take isl_constraint_list *ptr);
985
986public:
987 inline /* implicit */ constraint_list();
988 inline /* implicit */ constraint_list(const constraint_list &obj);
989 inline /* implicit */ constraint_list(std::nullptr_t);
990 inline constraint_list &operator=(constraint_list obj);
991 inline ~constraint_list();
992 inline __isl_give isl_constraint_list *copy() const &;
993 inline __isl_give isl_constraint_list *copy() && = delete;
994 inline __isl_keep isl_constraint_list *get() const;
995 inline __isl_give isl_constraint_list *release();
996 inline bool is_null() const;
997 inline explicit operator bool() const;
998 inline ctx get_ctx() const;
999 inline void dump() const;
1000
1001 inline constraint_list add(constraint el) const;
1002 static inline constraint_list alloc(ctx ctx, int n);
1003 inline constraint_list concat(constraint_list list2) const;
1004 inline constraint_list drop(unsigned int first, unsigned int n) const;
1005 inline stat foreach(const std::function<stat(constraint)> &fn) const;
1006 static inline constraint_list from_constraint(constraint el);
1007 inline constraint get_at(int index) const;
1008 inline constraint get_constraint(int index) const;
1009 inline constraint_list insert(unsigned int pos, constraint el) const;
1010 inline int n_constraint() const;
1011 inline constraint_list reverse() const;
1012 inline constraint_list set_constraint(int index, constraint el) const;
1013 inline int size() const;
1014 inline constraint_list swap(unsigned int pos1, unsigned int pos2) const;
1015};
1016
1017// declarations for isl::fixed_box
1018inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1019inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1020
1021class fixed_box {
1022 friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1023 friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1024
1025 isl_fixed_box *ptr = nullptr;
1026
1027 inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1028
1029public:
1030 inline /* implicit */ fixed_box();
1031 inline /* implicit */ fixed_box(const fixed_box &obj);
1032 inline /* implicit */ fixed_box(std::nullptr_t);
1033 inline fixed_box &operator=(fixed_box obj);
1034 inline ~fixed_box();
1035 inline __isl_give isl_fixed_box *copy() const &;
1036 inline __isl_give isl_fixed_box *copy() && = delete;
1037 inline __isl_keep isl_fixed_box *get() const;
1038 inline __isl_give isl_fixed_box *release();
1039 inline bool is_null() const;
1040 inline explicit operator bool() const;
1041 inline ctx get_ctx() const;
1042
1043 inline multi_aff get_offset() const;
1044 inline multi_val get_size() const;
1045 inline space get_space() const;
1046 inline boolean is_valid() const;
1047};
1048
1049// declarations for isl::id
1050inline id manage(__isl_take isl_id *ptr);
1051inline id manage_copy(__isl_keep isl_id *ptr);
1052
1053class id {
1054 friend inline id manage(__isl_take isl_id *ptr);
1055 friend inline id manage_copy(__isl_keep isl_id *ptr);
1056
1057 isl_id *ptr = nullptr;
1058
1059 inline explicit id(__isl_take isl_id *ptr);
1060
1061public:
1062 inline /* implicit */ id();
1063 inline /* implicit */ id(const id &obj);
1064 inline /* implicit */ id(std::nullptr_t);
1065 inline id &operator=(id obj);
1066 inline ~id();
1067 inline __isl_give isl_id *copy() const &;
1068 inline __isl_give isl_id *copy() && = delete;
1069 inline __isl_keep isl_id *get() const;
1070 inline __isl_give isl_id *release();
1071 inline bool is_null() const;
1072 inline explicit operator bool() const;
1073 inline ctx get_ctx() const;
1074 inline std::string to_str() const;
1075 inline void dump() const;
1076
1077 static inline id alloc(ctx ctx, const std::string &name, void * user);
1078 inline uint32_t get_hash() const;
1079 inline std::string get_name() const;
1080 inline void * get_user() const;
1081};
1082
1083// declarations for isl::id_list
1084inline id_list manage(__isl_take isl_id_list *ptr);
1085inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1086
1087class id_list {
1088 friend inline id_list manage(__isl_take isl_id_list *ptr);
1089 friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1090
1091 isl_id_list *ptr = nullptr;
1092
1093 inline explicit id_list(__isl_take isl_id_list *ptr);
1094
1095public:
1096 inline /* implicit */ id_list();
1097 inline /* implicit */ id_list(const id_list &obj);
1098 inline /* implicit */ id_list(std::nullptr_t);
1099 inline id_list &operator=(id_list obj);
1100 inline ~id_list();
1101 inline __isl_give isl_id_list *copy() const &;
1102 inline __isl_give isl_id_list *copy() && = delete;
1103 inline __isl_keep isl_id_list *get() const;
1104 inline __isl_give isl_id_list *release();
1105 inline bool is_null() const;
1106 inline explicit operator bool() const;
1107 inline ctx get_ctx() const;
1108 inline void dump() const;
1109
1110 inline id_list add(id el) const;
1111 static inline id_list alloc(ctx ctx, int n);
1112 inline id_list concat(id_list list2) const;
1113 inline id_list drop(unsigned int first, unsigned int n) const;
1114 inline stat foreach(const std::function<stat(id)> &fn) const;
1115 static inline id_list from_id(id el);
1116 inline id get_at(int index) const;
1117 inline id get_id(int index) const;
1118 inline id_list insert(unsigned int pos, id el) const;
1119 inline int n_id() const;
1120 inline id_list reverse() const;
1121 inline id_list set_id(int index, id el) const;
1122 inline int size() const;
1123 inline id_list swap(unsigned int pos1, unsigned int pos2) const;
1124};
1125
1126// declarations for isl::id_to_ast_expr
1127inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1128inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1129
1130class id_to_ast_expr {
1131 friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1132 friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1133
1134 isl_id_to_ast_expr *ptr = nullptr;
1135
1136 inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
1137
1138public:
1139 inline /* implicit */ id_to_ast_expr();
1140 inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj);
1141 inline /* implicit */ id_to_ast_expr(std::nullptr_t);
1142 inline id_to_ast_expr &operator=(id_to_ast_expr obj);
1143 inline ~id_to_ast_expr();
1144 inline __isl_give isl_id_to_ast_expr *copy() const &;
1145 inline __isl_give isl_id_to_ast_expr *copy() && = delete;
1146 inline __isl_keep isl_id_to_ast_expr *get() const;
1147 inline __isl_give isl_id_to_ast_expr *release();
1148 inline bool is_null() const;
1149 inline explicit operator bool() const;
1150 inline ctx get_ctx() const;
1151 inline void dump() const;
1152
1153 static inline id_to_ast_expr alloc(ctx ctx, int min_size);
1154 inline id_to_ast_expr drop(id key) const;
1155 inline stat foreach(const std::function<stat(id, ast_expr)> &fn) const;
1156 inline ast_expr get(id key) const;
1157 inline boolean has(const id &key) const;
1158 inline id_to_ast_expr set(id key, ast_expr val) const;
1159};
1160
1161// declarations for isl::local_space
1162inline local_space manage(__isl_take isl_local_space *ptr);
1163inline local_space manage_copy(__isl_keep isl_local_space *ptr);
1164
1165class local_space {
1166 friend inline local_space manage(__isl_take isl_local_space *ptr);
1167 friend inline local_space manage_copy(__isl_keep isl_local_space *ptr);
1168
1169 isl_local_space *ptr = nullptr;
1170
1171 inline explicit local_space(__isl_take isl_local_space *ptr);
1172
1173public:
1174 inline /* implicit */ local_space();
1175 inline /* implicit */ local_space(const local_space &obj);
1176 inline /* implicit */ local_space(std::nullptr_t);
1177 inline explicit local_space(space dim);
1178 inline local_space &operator=(local_space obj);
1179 inline ~local_space();
1180 inline __isl_give isl_local_space *copy() const &;
1181 inline __isl_give isl_local_space *copy() && = delete;
1182 inline __isl_keep isl_local_space *get() const;
1183 inline __isl_give isl_local_space *release();
1184 inline bool is_null() const;
1185 inline explicit operator bool() const;
1186 inline ctx get_ctx() const;
1187 inline void dump() const;
1188
1189 inline local_space add_dims(isl::dim type, unsigned int n) const;
1190 inline int dim(isl::dim type) const;
1191 inline local_space domain() const;
1192 inline local_space drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1193 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1194 inline local_space flatten_domain() const;
1195 inline local_space flatten_range() const;
1196 inline local_space from_domain() const;
1197 inline id get_dim_id(isl::dim type, unsigned int pos) const;
1198 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1199 inline aff get_div(int pos) const;
1200 inline space get_space() const;
1201 inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1202 inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
1203 inline local_space insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1204 inline local_space intersect(local_space ls2) const;
1205 inline boolean is_equal(const local_space &ls2) const;
1206 inline boolean is_params() const;
1207 inline boolean is_set() const;
1208 inline local_space range() const;
1209 inline local_space set_dim_id(isl::dim type, unsigned int pos, id id) const;
1210 inline local_space set_from_params() const;
1211 inline local_space set_tuple_id(isl::dim type, id id) const;
1212 inline local_space wrap() const;
1213};
1214
1215// declarations for isl::map
1216inline map manage(__isl_take isl_map *ptr);
1217inline map manage_copy(__isl_keep isl_map *ptr);
1218
1219class map {
1220 friend inline map manage(__isl_take isl_map *ptr);
1221 friend inline map manage_copy(__isl_keep isl_map *ptr);
1222
1223 isl_map *ptr = nullptr;
1224
1225 inline explicit map(__isl_take isl_map *ptr);
1226
1227public:
1228 inline /* implicit */ map();
1229 inline /* implicit */ map(const map &obj);
1230 inline /* implicit */ map(std::nullptr_t);
1231 inline explicit map(ctx ctx, const std::string &str);
1232 inline /* implicit */ map(basic_map bmap);
1233 inline map &operator=(map obj);
1234 inline ~map();
1235 inline __isl_give isl_map *copy() const &;
1236 inline __isl_give isl_map *copy() && = delete;
1237 inline __isl_keep isl_map *get() const;
1238 inline __isl_give isl_map *release();
1239 inline bool is_null() const;
1240 inline explicit operator bool() const;
1241 inline ctx get_ctx() const;
1242 inline std::string to_str() const;
1243 inline void dump() const;
1244
1245 inline map add_constraint(constraint constraint) const;
1246 inline map add_dims(isl::dim type, unsigned int n) const;
1247 inline basic_map affine_hull() const;
1248 inline map align_params(space model) const;
1249 inline map apply_domain(map map2) const;
1250 inline map apply_range(map map2) const;
1251 inline boolean can_curry() const;
1252 inline boolean can_range_curry() const;
1253 inline boolean can_uncurry() const;
1254 inline boolean can_zip() const;
1255 inline map coalesce() const;
1256 inline map complement() const;
1257 inline basic_map convex_hull() const;
1258 inline map curry() const;
1259 inline set deltas() const;
1260 inline map deltas_map() const;
1261 inline map detect_equalities() const;
1262 inline unsigned int dim(isl::dim type) const;
1263 inline pw_aff dim_max(int pos) const;
1264 inline pw_aff dim_min(int pos) const;
1265 inline set domain() const;
1266 inline map domain_factor_domain() const;
1267 inline map domain_factor_range() const;
1268 inline boolean domain_is_wrapping() const;
1269 inline map domain_map() const;
1270 inline map domain_product(map map2) const;
1271 inline map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1272 inline map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1273 inline map drop_unused_params() const;
1274 inline map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
1275 static inline map empty(space space);
1276 inline map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1277 inline map factor_domain() const;
1278 inline map factor_range() const;
1279 inline int find_dim_by_id(isl::dim type, const id &id) const;
1280 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1281 inline map fix_si(isl::dim type, unsigned int pos, int value) const;
1282 inline map fix_val(isl::dim type, unsigned int pos, val v) const;
1283 inline map fixed_power_val(val exp) const;
1284 inline map flat_domain_product(map map2) const;
1285 inline map flat_product(map map2) const;
1286 inline map flat_range_product(map map2) const;
1287 inline map flatten() const;
1288 inline map flatten_domain() const;
1289 inline map flatten_range() const;
1290 inline map floordiv_val(val d) const;
1291 inline stat foreach_basic_map(const std::function<stat(basic_map)> &fn) const;
1292 static inline map from_aff(aff aff);
1293 static inline map from_domain(set set);
1294 static inline map from_domain_and_range(set domain, set range);
1295 static inline map from_multi_aff(multi_aff maff);
1296 static inline map from_multi_pw_aff(multi_pw_aff mpa);
1297 static inline map from_pw_aff(pw_aff pwaff);
1298 static inline map from_pw_multi_aff(pw_multi_aff pma);
1299 static inline map from_range(set set);
1300 static inline map from_union_map(union_map umap);
1301 inline basic_map_list get_basic_map_list() const;
1302 inline id get_dim_id(isl::dim type, unsigned int pos) const;
1303 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1304 inline uint32_t get_hash() const;
1305 inline fixed_box get_range_simple_fixed_box_hull() const;
1306 inline space get_space() const;
1307 inline id get_tuple_id(isl::dim type) const;
1308 inline std::string get_tuple_name(isl::dim type) const;
1309 inline map gist(map context) const;
1310 inline map gist_basic_map(basic_map context) const;
1311 inline map gist_domain(set context) const;
1312 inline map gist_params(set context) const;
1313 inline map gist_range(set context) const;
1314 inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1315 inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
1316 inline boolean has_equal_space(const map &map2) const;
1317 inline boolean has_tuple_id(isl::dim type) const;
1318 inline boolean has_tuple_name(isl::dim type) const;
1319 static inline map identity(space dim);
1320 inline map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
1321 inline map intersect(map map2) const;
1322 inline map intersect_domain(set set) const;
1323 inline map intersect_domain_factor_range(map factor) const;
1324 inline map intersect_params(set params) const;
1325 inline map intersect_range(set set) const;
1326 inline map intersect_range_factor_range(map factor) const;
1327 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1328 inline boolean is_bijective() const;
1329 inline boolean is_disjoint(const map &map2) const;
1330 inline boolean is_empty() const;
1331 inline boolean is_equal(const map &map2) const;
1332 inline boolean is_identity() const;
1333 inline boolean is_injective() const;
1334 inline boolean is_product() const;
1335 inline boolean is_single_valued() const;
1336 inline boolean is_strict_subset(const map &map2) const;
1337 inline boolean is_subset(const map &map2) const;
1338 inline int is_translation() const;
1339 static inline map lex_ge(space set_dim);
1340 static inline map lex_ge_first(space dim, unsigned int n);
1341 inline map lex_ge_map(map map2) const;
1342 static inline map lex_gt(space set_dim);
1343 static inline map lex_gt_first(space dim, unsigned int n);
1344 inline map lex_gt_map(map map2) const;
1345 static inline map lex_le(space set_dim);
1346 static inline map lex_le_first(space dim, unsigned int n);
1347 inline map lex_le_map(map map2) const;
1348 static inline map lex_lt(space set_dim);
1349 static inline map lex_lt_first(space dim, unsigned int n);
1350 inline map lex_lt_map(map map2) const;
1351 inline map lexmax() const;
1352 inline pw_multi_aff lexmax_pw_multi_aff() const;
1353 inline map lexmin() const;
1354 inline pw_multi_aff lexmin_pw_multi_aff() const;
1355 inline map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1356 inline map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1357 inline int n_basic_map() const;
1358 static inline map nat_universe(space dim);
1359 inline map neg() const;
1360 inline map oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1361 inline map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1362 inline map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1363 inline map order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1364 inline map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1365 inline set params() const;
1366 inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1367 inline boolean plain_is_empty() const;
1368 inline boolean plain_is_equal(const map &map2) const;
1369 inline boolean plain_is_injective() const;
1370 inline boolean plain_is_single_valued() const;
1371 inline boolean plain_is_universe() const;
1372 inline basic_map plain_unshifted_simple_hull() const;
1373 inline basic_map polyhedral_hull() const;
1374 inline map preimage_domain_multi_aff(multi_aff ma) const;
1375 inline map preimage_domain_multi_pw_aff(multi_pw_aff mpa) const;
1376 inline map preimage_domain_pw_multi_aff(pw_multi_aff pma) const;
1377 inline map preimage_range_multi_aff(multi_aff ma) const;
1378 inline map preimage_range_pw_multi_aff(pw_multi_aff pma) const;
1379 inline map product(map map2) const;
1380 inline map project_out(isl::dim type, unsigned int first, unsigned int n) const;
1381 inline set range() const;
1382 inline map range_curry() const;
1383 inline map range_factor_domain() const;
1384 inline map range_factor_range() const;
1385 inline boolean range_is_wrapping() const;
1386 inline map range_map() const;
1387 inline map range_product(map map2) const;
1388 inline map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
1389 inline map remove_divs() const;
1390 inline map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1391 inline map remove_redundancies() const;
1392 inline map remove_unknown_divs() const;
1393 inline map reset_tuple_id(isl::dim type) const;
1394 inline map reset_user() const;
1395 inline map reverse() const;
1396 inline basic_map sample() const;
1397 inline map set_dim_id(isl::dim type, unsigned int pos, id id) const;
1398 inline map set_tuple_id(isl::dim type, id id) const;
1399 inline map set_tuple_name(isl::dim type, const std::string &s) const;
1400 inline basic_map simple_hull() const;
1401 inline map subtract(map map2) const;
1402 inline map subtract_domain(set dom) const;
1403 inline map subtract_range(set dom) const;
1404 inline map sum(map map2) const;
1405 inline map uncurry() const;
1406 inline map unite(map map2) const;
1407 static inline map universe(space space);
1408 inline basic_map unshifted_simple_hull() const;
1409 inline basic_map unshifted_simple_hull_from_map_list(map_list list) const;
1410 inline map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
1411 inline set wrap() const;
1412 inline map zip() const;
1413};
1414
1415// declarations for isl::map_list
1416inline map_list manage(__isl_take isl_map_list *ptr);
1417inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1418
1419class map_list {
1420 friend inline map_list manage(__isl_take isl_map_list *ptr);
1421 friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1422
1423 isl_map_list *ptr = nullptr;
1424
1425 inline explicit map_list(__isl_take isl_map_list *ptr);
1426
1427public:
1428 inline /* implicit */ map_list();
1429 inline /* implicit */ map_list(const map_list &obj);
1430 inline /* implicit */ map_list(std::nullptr_t);
1431 inline map_list &operator=(map_list obj);
1432 inline ~map_list();
1433 inline __isl_give isl_map_list *copy() const &;
1434 inline __isl_give isl_map_list *copy() && = delete;
1435 inline __isl_keep isl_map_list *get() const;
1436 inline __isl_give isl_map_list *release();
1437 inline bool is_null() const;
1438 inline explicit operator bool() const;
1439 inline ctx get_ctx() const;
1440 inline void dump() const;
1441
1442 inline map_list add(map el) const;
1443 static inline map_list alloc(ctx ctx, int n);
1444 inline map_list concat(map_list list2) const;
1445 inline map_list drop(unsigned int first, unsigned int n) const;
1446 inline stat foreach(const std::function<stat(map)> &fn) const;
1447 static inline map_list from_map(map el);
1448 inline map get_at(int index) const;
1449 inline map get_map(int index) const;
1450 inline map_list insert(unsigned int pos, map el) const;
1451 inline int n_map() const;
1452 inline map_list reverse() const;
1453 inline map_list set_map(int index, map el) const;
1454 inline int size() const;
1455 inline map_list swap(unsigned int pos1, unsigned int pos2) const;
1456};
1457
1458// declarations for isl::mat
1459inline mat manage(__isl_take isl_mat *ptr);
1460inline mat manage_copy(__isl_keep isl_mat *ptr);
1461
1462class mat {
1463 friend inline mat manage(__isl_take isl_mat *ptr);
1464 friend inline mat manage_copy(__isl_keep isl_mat *ptr);
1465
1466 isl_mat *ptr = nullptr;
1467
1468 inline explicit mat(__isl_take isl_mat *ptr);
1469
1470public:
1471 inline /* implicit */ mat();
1472 inline /* implicit */ mat(const mat &obj);
1473 inline /* implicit */ mat(std::nullptr_t);
1474 inline mat &operator=(mat obj);
1475 inline ~mat();
1476 inline __isl_give isl_mat *copy() const &;
1477 inline __isl_give isl_mat *copy() && = delete;
1478 inline __isl_keep isl_mat *get() const;
1479 inline __isl_give isl_mat *release();
1480 inline bool is_null() const;
1481 inline explicit operator bool() const;
1482 inline ctx get_ctx() const;
1483 inline void dump() const;
1484
1485 inline mat add_rows(unsigned int n) const;
1486 inline mat add_zero_cols(unsigned int n) const;
1487 inline mat add_zero_rows(unsigned int n) const;
1488 inline mat aff_direct_sum(mat right) const;
1489 static inline mat alloc(ctx ctx, unsigned int n_row, unsigned int n_col);
1490 inline int cols() const;
1491 inline mat concat(mat bot) const;
1492 inline mat diagonal(mat mat2) const;
1493 inline mat drop_cols(unsigned int col, unsigned int n) const;
1494 inline mat drop_rows(unsigned int row, unsigned int n) const;
1495 static inline mat from_row_vec(vec vec);
1496 inline val get_element_val(int row, int col) const;
1497 inline boolean has_linearly_independent_rows(const mat &mat2) const;
1498 inline int initial_non_zero_cols() const;
1499 inline mat insert_cols(unsigned int col, unsigned int n) const;
1500 inline mat insert_rows(unsigned int row, unsigned int n) const;
1501 inline mat insert_zero_cols(unsigned int first, unsigned int n) const;
1502 inline mat insert_zero_rows(unsigned int row, unsigned int n) const;
1503 inline mat inverse_product(mat right) const;
1504 inline boolean is_equal(const mat &mat2) const;
1505 inline mat lin_to_aff() const;
1506 inline mat move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
1507 inline mat normalize() const;
1508 inline mat normalize_row(int row) const;
1509 inline mat product(mat right) const;
1510 inline int rank() const;
1511 inline mat right_inverse() const;
1512 inline mat right_kernel() const;
1513 inline mat row_basis() const;
1514 inline mat row_basis_extension(mat mat2) const;
1515 inline int rows() const;
1516 inline mat set_element_si(int row, int col, int v) const;
1517 inline mat set_element_val(int row, int col, val v) const;
1518 inline mat swap_cols(unsigned int i, unsigned int j) const;
1519 inline mat swap_rows(unsigned int i, unsigned int j) const;
1520 inline mat transpose() const;
1521 inline mat unimodular_complete(int row) const;
1522 inline mat vec_concat(vec bot) const;
1523 inline vec vec_inverse_product(vec vec) const;
1524 inline vec vec_product(vec vec) const;
1525};
1526
1527// declarations for isl::multi_aff
1528inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1529inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1530
1531class multi_aff {
1532 friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1533 friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1534
1535 isl_multi_aff *ptr = nullptr;
1536
1537 inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
1538
1539public:
1540 inline /* implicit */ multi_aff();
1541 inline /* implicit */ multi_aff(const multi_aff &obj);
1542 inline /* implicit */ multi_aff(std::nullptr_t);
1543 inline /* implicit */ multi_aff(aff aff);
1544 inline explicit multi_aff(ctx ctx, const std::string &str);
1545 inline multi_aff &operator=(multi_aff obj);
1546 inline ~multi_aff();
1547 inline __isl_give isl_multi_aff *copy() const &;
1548 inline __isl_give isl_multi_aff *copy() && = delete;
1549 inline __isl_keep isl_multi_aff *get() const;
1550 inline __isl_give isl_multi_aff *release();
1551 inline bool is_null() const;
1552 inline explicit operator bool() const;
1553 inline ctx get_ctx() const;
1554 inline std::string to_str() const;
1555 inline void dump() const;
1556
1557 inline multi_aff add(multi_aff multi2) const;
1558 inline multi_aff add_dims(isl::dim type, unsigned int n) const;
1559 inline multi_aff align_params(space model) const;
1560 inline unsigned int dim(isl::dim type) const;
1561 static inline multi_aff domain_map(space space);
1562 inline multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1563 inline multi_aff factor_range() const;
1564 inline int find_dim_by_id(isl::dim type, const id &id) const;
1565 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1566 inline multi_aff flat_range_product(multi_aff multi2) const;
1567 inline multi_aff flatten_domain() const;
1568 inline multi_aff flatten_range() const;
1569 inline multi_aff floor() const;
1570 static inline multi_aff from_aff_list(space space, aff_list list);
1571 inline multi_aff from_range() const;
1572 inline aff get_aff(int pos) const;
1573 inline id get_dim_id(isl::dim type, unsigned int pos) const;
1574 inline space get_domain_space() const;
1575 inline space get_space() const;
1576 inline id get_tuple_id(isl::dim type) const;
1577 inline std::string get_tuple_name(isl::dim type) const;
1578 inline multi_aff gist(set context) const;
1579 inline multi_aff gist_params(set context) const;
1580 inline boolean has_tuple_id(isl::dim type) const;
1581 static inline multi_aff identity(space space);
1582 inline multi_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1583 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1584 inline boolean involves_nan() const;
1585 inline set lex_ge_set(multi_aff ma2) const;
1586 inline set lex_gt_set(multi_aff ma2) const;
1587 inline set lex_le_set(multi_aff ma2) const;
1588 inline set lex_lt_set(multi_aff ma2) const;
1589 inline multi_aff mod_multi_val(multi_val mv) const;
1590 inline multi_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1591 static inline multi_aff multi_val_on_space(space space, multi_val mv);
1592 inline multi_aff neg() const;
1593 inline int plain_cmp(const multi_aff &multi2) const;
1594 inline boolean plain_is_equal(const multi_aff &multi2) const;
1595 inline multi_aff product(multi_aff multi2) const;
1596 inline multi_aff project_domain_on_params() const;
1597 static inline multi_aff project_out_map(space space, isl::dim type, unsigned int first, unsigned int n);
1598 inline multi_aff pullback(multi_aff ma2) const;
1599 inline multi_aff range_factor_domain() const;
1600 inline multi_aff range_factor_range() const;
1601 inline boolean range_is_wrapping() const;
1602 static inline multi_aff range_map(space space);
1603 inline multi_aff range_product(multi_aff multi2) const;
1604 inline multi_aff range_splice(unsigned int pos, multi_aff multi2) const;
1605 inline multi_aff reset_tuple_id(isl::dim type) const;
1606 inline multi_aff reset_user() const;
1607 inline multi_aff scale_down_multi_val(multi_val mv) const;
1608 inline multi_aff scale_down_val(val v) const;
1609 inline multi_aff scale_multi_val(multi_val mv) const;
1610 inline multi_aff scale_val(val v) const;
1611 inline multi_aff set_aff(int pos, aff el) const;
1612 inline multi_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
1613 inline multi_aff set_tuple_id(isl::dim type, id id) const;
1614 inline multi_aff set_tuple_name(isl::dim type, const std::string &s) const;
1615 inline multi_aff splice(unsigned int in_pos, unsigned int out_pos, multi_aff multi2) const;
1616 inline multi_aff sub(multi_aff multi2) const;
1617 static inline multi_aff zero(space space);
1618};
1619
1620// declarations for isl::multi_pw_aff
1621inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1622inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1623
1624class multi_pw_aff {
1625 friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1626 friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1627
1628 isl_multi_pw_aff *ptr = nullptr;
1629
1630 inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
1631
1632public:
1633 inline /* implicit */ multi_pw_aff();
1634 inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
1635 inline /* implicit */ multi_pw_aff(std::nullptr_t);
1636 inline /* implicit */ multi_pw_aff(multi_aff ma);
1637 inline /* implicit */ multi_pw_aff(pw_aff pa);
1638 inline /* implicit */ multi_pw_aff(pw_multi_aff pma);
1639 inline explicit multi_pw_aff(ctx ctx, const std::string &str);
1640 inline multi_pw_aff &operator=(multi_pw_aff obj);
1641 inline ~multi_pw_aff();
1642 inline __isl_give isl_multi_pw_aff *copy() const &;
1643 inline __isl_give isl_multi_pw_aff *copy() && = delete;
1644 inline __isl_keep isl_multi_pw_aff *get() const;
1645 inline __isl_give isl_multi_pw_aff *release();
1646 inline bool is_null() const;
1647 inline explicit operator bool() const;
1648 inline ctx get_ctx() const;
1649 inline std::string to_str() const;
1650 inline void dump() const;
1651
1652 inline multi_pw_aff add(multi_pw_aff multi2) const;
1653 inline multi_pw_aff add_dims(isl::dim type, unsigned int n) const;
1654 inline multi_pw_aff align_params(space model) const;
1655 inline multi_pw_aff coalesce() const;
1656 inline unsigned int dim(isl::dim type) const;
1657 inline set domain() const;
1658 inline multi_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1659 inline map eq_map(multi_pw_aff mpa2) const;
1660 inline multi_pw_aff factor_range() const;
1661 inline int find_dim_by_id(isl::dim type, const id &id) const;
1662 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1663 inline multi_pw_aff flat_range_product(multi_pw_aff multi2) const;
1664 inline multi_pw_aff flatten_range() const;
1665 static inline multi_pw_aff from_pw_aff_list(space space, pw_aff_list list);
1666 inline multi_pw_aff from_range() const;
1667 inline id get_dim_id(isl::dim type, unsigned int pos) const;
1668 inline space get_domain_space() const;
1669 inline uint32_t get_hash() const;
1670 inline pw_aff get_pw_aff(int pos) const;
1671 inline space get_space() const;
1672 inline id get_tuple_id(isl::dim type) const;
1673 inline std::string get_tuple_name(isl::dim type) const;
1674 inline multi_pw_aff gist(set set) const;
1675 inline multi_pw_aff gist_params(set set) const;
1676 inline boolean has_tuple_id(isl::dim type) const;
1677 static inline multi_pw_aff identity(space space);
1678 inline multi_pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1679 inline multi_pw_aff intersect_domain(set domain) const;
1680 inline multi_pw_aff intersect_params(set set) const;
1681 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1682 inline boolean involves_nan() const;
1683 inline boolean is_cst() const;
1684 inline boolean is_equal(const multi_pw_aff &mpa2) const;
1685 inline map lex_gt_map(multi_pw_aff mpa2) const;
1686 inline map lex_lt_map(multi_pw_aff mpa2) const;
1687 inline multi_pw_aff mod_multi_val(multi_val mv) const;
1688 inline multi_pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1689 inline multi_pw_aff neg() const;
1690 inline boolean plain_is_equal(const multi_pw_aff &multi2) const;
1691 inline multi_pw_aff product(multi_pw_aff multi2) const;
1692 inline multi_pw_aff project_domain_on_params() const;
1693 inline multi_pw_aff pullback(multi_aff ma) const;
1694 inline multi_pw_aff pullback(pw_multi_aff pma) const;
1695 inline multi_pw_aff pullback(multi_pw_aff mpa2) const;
1696 inline multi_pw_aff range_factor_domain() const;
1697 inline multi_pw_aff range_factor_range() const;
1698 inline boolean range_is_wrapping() const;
1699 inline multi_pw_aff range_product(multi_pw_aff multi2) const;
1700 inline multi_pw_aff range_splice(unsigned int pos, multi_pw_aff multi2) const;
1701 inline multi_pw_aff reset_tuple_id(isl::dim type) const;
1702 inline multi_pw_aff reset_user() const;
1703 inline multi_pw_aff scale_down_multi_val(multi_val mv) const;
1704 inline multi_pw_aff scale_down_val(val v) const;
1705 inline multi_pw_aff scale_multi_val(multi_val mv) const;
1706 inline multi_pw_aff scale_val(val v) const;
1707 inline multi_pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
1708 inline multi_pw_aff set_pw_aff(int pos, pw_aff el) const;
1709 inline multi_pw_aff set_tuple_id(isl::dim type, id id) const;
1710 inline multi_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1711 inline multi_pw_aff splice(unsigned int in_pos, unsigned int out_pos, multi_pw_aff multi2) const;
1712 inline multi_pw_aff sub(multi_pw_aff multi2) const;
1713 static inline multi_pw_aff zero(space space);
1714};
1715
1716// declarations for isl::multi_union_pw_aff
1717inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1718inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1719
1720class multi_union_pw_aff {
1721 friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1722 friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1723
1724 isl_multi_union_pw_aff *ptr = nullptr;
1725
1726 inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
1727
1728public:
1729 inline /* implicit */ multi_union_pw_aff();
1730 inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
1731 inline /* implicit */ multi_union_pw_aff(std::nullptr_t);
1732 inline /* implicit */ multi_union_pw_aff(union_pw_aff upa);
1733 inline /* implicit */ multi_union_pw_aff(multi_pw_aff mpa);
1734 inline explicit multi_union_pw_aff(union_pw_multi_aff upma);
1735 inline explicit multi_union_pw_aff(ctx ctx, const std::string &str);
1736 inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
1737 inline ~multi_union_pw_aff();
1738 inline __isl_give isl_multi_union_pw_aff *copy() const &;
1739 inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
1740 inline __isl_keep isl_multi_union_pw_aff *get() const;
1741 inline __isl_give isl_multi_union_pw_aff *release();
1742 inline bool is_null() const;
1743 inline explicit operator bool() const;
1744 inline ctx get_ctx() const;
1745 inline std::string to_str() const;
1746 inline void dump() const;
1747
1748 inline multi_union_pw_aff add(multi_union_pw_aff multi2) const;
1749 inline multi_union_pw_aff align_params(space model) const;
1750 inline union_pw_aff apply_aff(aff aff) const;
1751 inline union_pw_aff apply_pw_aff(pw_aff pa) const;
1752 inline multi_union_pw_aff apply_pw_multi_aff(pw_multi_aff pma) const;
1753 inline multi_union_pw_aff coalesce() const;
1754 inline unsigned int dim(isl::dim type) const;
1755 inline union_set domain() const;
1756 inline multi_union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1757 inline multi_pw_aff extract_multi_pw_aff(space space) const;
1758 inline multi_union_pw_aff factor_range() const;
1759 inline int find_dim_by_id(isl::dim type, const id &id) const;
1760 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1761 inline multi_union_pw_aff flat_range_product(multi_union_pw_aff multi2) const;
1762 inline multi_union_pw_aff flatten_range() const;
1763 inline multi_union_pw_aff floor() const;
1764 static inline multi_union_pw_aff from_multi_aff(multi_aff ma);
1765 inline multi_union_pw_aff from_range() const;
1766 static inline multi_union_pw_aff from_union_map(union_map umap);
1767 static inline multi_union_pw_aff from_union_pw_aff_list(space space, union_pw_aff_list list);
1768 inline id get_dim_id(isl::dim type, unsigned int pos) const;
1769 inline space get_domain_space() const;
1770 inline space get_space() const;
1771 inline id get_tuple_id(isl::dim type) const;
1772 inline std::string get_tuple_name(isl::dim type) const;
1773 inline union_pw_aff get_union_pw_aff(int pos) const;
1774 inline multi_union_pw_aff gist(union_set context) const;
1775 inline multi_union_pw_aff gist_params(set context) const;
1776 inline boolean has_tuple_id(isl::dim type) const;
1777 inline multi_union_pw_aff intersect_domain(union_set uset) const;
1778 inline multi_union_pw_aff intersect_params(set params) const;
1779 inline multi_union_pw_aff intersect_range(set set) const;
1780 inline boolean involves_nan() const;
1781 inline multi_val max_multi_val() const;
1782 inline multi_val min_multi_val() const;
1783 inline multi_union_pw_aff mod_multi_val(multi_val mv) const;
1784 static inline multi_union_pw_aff multi_aff_on_domain(union_set domain, multi_aff ma);
1785 static inline multi_union_pw_aff multi_val_on_domain(union_set domain, multi_val mv);
1786 inline multi_union_pw_aff neg() const;
1787 inline boolean plain_is_equal(const multi_union_pw_aff &multi2) const;
1788 inline multi_union_pw_aff pullback(union_pw_multi_aff upma) const;
1789 static inline multi_union_pw_aff pw_multi_aff_on_domain(union_set domain, pw_multi_aff pma);
1790 inline multi_union_pw_aff range_factor_domain() const;
1791 inline multi_union_pw_aff range_factor_range() const;
1792 inline boolean range_is_wrapping() const;
1793 inline multi_union_pw_aff range_product(multi_union_pw_aff multi2) const;
1794 inline multi_union_pw_aff range_splice(unsigned int pos, multi_union_pw_aff multi2) const;
1795 inline multi_union_pw_aff reset_tuple_id(isl::dim type) const;
1796 inline multi_union_pw_aff reset_user() const;
1797 inline multi_union_pw_aff scale_down_multi_val(multi_val mv) const;
1798 inline multi_union_pw_aff scale_down_val(val v) const;
1799 inline multi_union_pw_aff scale_multi_val(multi_val mv) const;
1800 inline multi_union_pw_aff scale_val(val v) const;
1801 inline multi_union_pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
1802 inline multi_union_pw_aff set_tuple_id(isl::dim type, id id) const;
1803 inline multi_union_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1804 inline multi_union_pw_aff set_union_pw_aff(int pos, union_pw_aff el) const;
1805 inline multi_union_pw_aff sub(multi_union_pw_aff multi2) const;
1806 inline multi_union_pw_aff union_add(multi_union_pw_aff mupa2) const;
1807 static inline multi_union_pw_aff zero(space space);
1808 inline union_set zero_union_set() const;
1809};
1810
1811// declarations for isl::multi_val
1812inline multi_val manage(__isl_take isl_multi_val *ptr);
1813inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1814
1815class multi_val {
1816 friend inline multi_val manage(__isl_take isl_multi_val *ptr);
1817 friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1818
1819 isl_multi_val *ptr = nullptr;
1820
1821 inline explicit multi_val(__isl_take isl_multi_val *ptr);
1822
1823public:
1824 inline /* implicit */ multi_val();
1825 inline /* implicit */ multi_val(const multi_val &obj);
1826 inline /* implicit */ multi_val(std::nullptr_t);
1827 inline multi_val &operator=(multi_val obj);
1828 inline ~multi_val();
1829 inline __isl_give isl_multi_val *copy() const &;
1830 inline __isl_give isl_multi_val *copy() && = delete;
1831 inline __isl_keep isl_multi_val *get() const;
1832 inline __isl_give isl_multi_val *release();
1833 inline bool is_null() const;
1834 inline explicit operator bool() const;
1835 inline ctx get_ctx() const;
1836 inline std::string to_str() const;
1837 inline void dump() const;
1838
1839 inline multi_val add(multi_val multi2) const;
1840 inline multi_val add_dims(isl::dim type, unsigned int n) const;
1841 inline multi_val add_val(val v) const;
1842 inline multi_val align_params(space model) const;
1843 inline unsigned int dim(isl::dim type) const;
1844 inline multi_val drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1845 inline multi_val factor_range() const;
1846 inline int find_dim_by_id(isl::dim type, const id &id) const;
1847 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1848 inline multi_val flat_range_product(multi_val multi2) const;
1849 inline multi_val flatten_range() const;
1850 inline multi_val from_range() const;
1851 static inline multi_val from_val_list(space space, val_list list);
1852 inline id get_dim_id(isl::dim type, unsigned int pos) const;
1853 inline space get_domain_space() const;
1854 inline space get_space() const;
1855 inline id get_tuple_id(isl::dim type) const;
1856 inline std::string get_tuple_name(isl::dim type) const;
1857 inline val get_val(int pos) const;
1858 inline boolean has_tuple_id(isl::dim type) const;
1859 inline multi_val insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1860 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1861 inline boolean involves_nan() const;
1862 inline multi_val mod_multi_val(multi_val mv) const;
1863 inline multi_val mod_val(val v) const;
1864 inline multi_val neg() const;
1865 inline boolean plain_is_equal(const multi_val &multi2) const;
1866 inline multi_val product(multi_val multi2) const;
1867 inline multi_val project_domain_on_params() const;
1868 inline multi_val range_factor_domain() const;
1869 inline multi_val range_factor_range() const;
1870 inline boolean range_is_wrapping() const;
1871 inline multi_val range_product(multi_val multi2) const;
1872 inline multi_val range_splice(unsigned int pos, multi_val multi2) const;
1873 static inline multi_val read_from_str(ctx ctx, const std::string &str);
1874 inline multi_val reset_tuple_id(isl::dim type) const;
1875 inline multi_val reset_user() const;
1876 inline multi_val scale_down_multi_val(multi_val mv) const;
1877 inline multi_val scale_down_val(val v) const;
1878 inline multi_val scale_multi_val(multi_val mv) const;
1879 inline multi_val scale_val(val v) const;
1880 inline multi_val set_dim_id(isl::dim type, unsigned int pos, id id) const;
1881 inline multi_val set_tuple_id(isl::dim type, id id) const;
1882 inline multi_val set_tuple_name(isl::dim type, const std::string &s) const;
1883 inline multi_val set_val(int pos, val el) const;
1884 inline multi_val splice(unsigned int in_pos, unsigned int out_pos, multi_val multi2) const;
1885 inline multi_val sub(multi_val multi2) const;
1886 static inline multi_val zero(space space);
1887};
1888
1889// declarations for isl::point
1890inline point manage(__isl_take isl_point *ptr);
1891inline point manage_copy(__isl_keep isl_point *ptr);
1892
1893class point {
1894 friend inline point manage(__isl_take isl_point *ptr);
1895 friend inline point manage_copy(__isl_keep isl_point *ptr);
1896
1897 isl_point *ptr = nullptr;
1898
1899 inline explicit point(__isl_take isl_point *ptr);
1900
1901public:
1902 inline /* implicit */ point();
1903 inline /* implicit */ point(const point &obj);
1904 inline /* implicit */ point(std::nullptr_t);
1905 inline explicit point(space dim);
1906 inline point &operator=(point obj);
1907 inline ~point();
1908 inline __isl_give isl_point *copy() const &;
1909 inline __isl_give isl_point *copy() && = delete;
1910 inline __isl_keep isl_point *get() const;
1911 inline __isl_give isl_point *release();
1912 inline bool is_null() const;
1913 inline explicit operator bool() const;
1914 inline ctx get_ctx() const;
1915 inline std::string to_str() const;
1916 inline void dump() const;
1917
1918 inline point add_ui(isl::dim type, int pos, unsigned int val) const;
1919 inline val get_coordinate_val(isl::dim type, int pos) const;
1920 inline space get_space() const;
1921 inline point set_coordinate_val(isl::dim type, int pos, val v) const;
1922 inline point sub_ui(isl::dim type, int pos, unsigned int val) const;
1923};
1924
1925// declarations for isl::pw_aff
1926inline pw_aff manage(__isl_take isl_pw_aff *ptr);
1927inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1928
1929class pw_aff {
1930 friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
1931 friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1932
1933 isl_pw_aff *ptr = nullptr;
1934
1935 inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
1936
1937public:
1938 inline /* implicit */ pw_aff();
1939 inline /* implicit */ pw_aff(const pw_aff &obj);
1940 inline /* implicit */ pw_aff(std::nullptr_t);
1941 inline /* implicit */ pw_aff(aff aff);
1942 inline explicit pw_aff(local_space ls);
1943 inline explicit pw_aff(set domain, val v);
1944 inline explicit pw_aff(ctx ctx, const std::string &str);
1945 inline pw_aff &operator=(pw_aff obj);
1946 inline ~pw_aff();
1947 inline __isl_give isl_pw_aff *copy() const &;
1948 inline __isl_give isl_pw_aff *copy() && = delete;
1949 inline __isl_keep isl_pw_aff *get() const;
1950 inline __isl_give isl_pw_aff *release();
1951 inline bool is_null() const;
1952 inline explicit operator bool() const;
1953 inline ctx get_ctx() const;
1954 inline std::string to_str() const;
1955 inline void dump() const;
1956
1957 inline pw_aff add(pw_aff pwaff2) const;
1958 inline pw_aff add_dims(isl::dim type, unsigned int n) const;
1959 inline pw_aff align_params(space model) const;
1960 static inline pw_aff alloc(set set, aff aff);
1961 inline pw_aff ceil() const;
1962 inline pw_aff coalesce() const;
1963 inline pw_aff cond(pw_aff pwaff_true, pw_aff pwaff_false) const;
1964 inline unsigned int dim(isl::dim type) const;
1965 inline pw_aff div(pw_aff pa2) const;
1966 inline set domain() const;
1967 inline pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1968 inline pw_aff drop_unused_params() const;
1969 static inline pw_aff empty(space dim);
1970 inline map eq_map(pw_aff pa2) const;
1971 inline set eq_set(pw_aff pwaff2) const;
1972 inline val eval(point pnt) const;
1973 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1974 inline pw_aff floor() const;
1975 inline stat foreach_piece(const std::function<stat(set, aff)> &fn) const;
1976 inline pw_aff from_range() const;
1977 inline set ge_set(pw_aff pwaff2) const;
1978 inline id get_dim_id(isl::dim type, unsigned int pos) const;
1979 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1980 inline space get_domain_space() const;
1981 inline uint32_t get_hash() const;
1982 inline space get_space() const;
1983 inline id get_tuple_id(isl::dim type) const;
1984 inline pw_aff gist(set context) const;
1985 inline pw_aff gist_params(set context) const;
1986 inline map gt_map(pw_aff pa2) const;
1987 inline set gt_set(pw_aff pwaff2) const;
1988 inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1989 inline boolean has_tuple_id(isl::dim type) const;
1990 inline pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1991 inline pw_aff intersect_domain(set set) const;
1992 inline pw_aff intersect_params(set set) const;
1993 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1994 inline boolean involves_nan() const;
1995 inline boolean is_cst() const;
1996 inline boolean is_empty() const;
1997 inline boolean is_equal(const pw_aff &pa2) const;
1998 inline set le_set(pw_aff pwaff2) const;
1999 inline map lt_map(pw_aff pa2) const;
2000 inline set lt_set(pw_aff pwaff2) const;
2001 inline pw_aff max(pw_aff pwaff2) const;
2002 inline pw_aff min(pw_aff pwaff2) const;
2003 inline pw_aff mod(val mod) const;
2004 inline pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2005 inline pw_aff mul(pw_aff pwaff2) const;
2006 inline int n_piece() const;
2007 static inline pw_aff nan_on_domain(local_space ls);
2008 inline set ne_set(pw_aff pwaff2) const;
2009 inline pw_aff neg() const;
2010 inline set non_zero_set() const;
2011 inline set nonneg_set() const;
2012 inline set params() const;
2013 inline int plain_cmp(const pw_aff &pa2) const;
2014 inline boolean plain_is_equal(const pw_aff &pwaff2) const;
2015 inline set pos_set() const;
2016 inline pw_aff project_domain_on_params() const;
2017 inline pw_aff pullback(multi_aff ma) const;
2018 inline pw_aff pullback(pw_multi_aff pma) const;
2019 inline pw_aff pullback(multi_pw_aff mpa) const;
2020 inline pw_aff reset_tuple_id(isl::dim type) const;
2021 inline pw_aff reset_user() const;
2022 inline pw_aff scale(val v) const;
2023 inline pw_aff scale_down(val f) const;
2024 inline pw_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
2025 inline pw_aff set_tuple_id(isl::dim type, id id) const;
2026 inline pw_aff sub(pw_aff pwaff2) const;
2027 inline pw_aff subtract_domain(set set) const;
2028 inline pw_aff tdiv_q(pw_aff pa2) const;
2029 inline pw_aff tdiv_r(pw_aff pa2) const;
2030 inline pw_aff union_add(pw_aff pwaff2) const;
2031 inline pw_aff union_max(pw_aff pwaff2) const;
2032 inline pw_aff union_min(pw_aff pwaff2) const;
2033 static inline pw_aff var_on_domain(local_space ls, isl::dim type, unsigned int pos);
2034 inline set zero_set() const;
2035};
2036
2037// declarations for isl::pw_aff_list
2038inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2039inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2040
2041class pw_aff_list {
2042 friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2043 friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2044
2045 isl_pw_aff_list *ptr = nullptr;
2046
2047 inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
2048
2049public:
2050 inline /* implicit */ pw_aff_list();
2051 inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
2052 inline /* implicit */ pw_aff_list(std::nullptr_t);
2053 inline pw_aff_list &operator=(pw_aff_list obj);
2054 inline ~pw_aff_list();
2055 inline __isl_give isl_pw_aff_list *copy() const &;
2056 inline __isl_give isl_pw_aff_list *copy() && = delete;
2057 inline __isl_keep isl_pw_aff_list *get() const;
2058 inline __isl_give isl_pw_aff_list *release();
2059 inline bool is_null() const;
2060 inline explicit operator bool() const;
2061 inline ctx get_ctx() const;
2062 inline void dump() const;
2063
2064 inline pw_aff_list add(pw_aff el) const;
2065 static inline pw_aff_list alloc(ctx ctx, int n);
2066 inline pw_aff_list concat(pw_aff_list list2) const;
2067 inline pw_aff_list drop(unsigned int first, unsigned int n) const;
2068 inline set eq_set(pw_aff_list list2) const;
2069 inline stat foreach(const std::function<stat(pw_aff)> &fn) const;
2070 static inline pw_aff_list from_pw_aff(pw_aff el);
2071 inline set ge_set(pw_aff_list list2) const;
2072 inline pw_aff get_at(int index) const;
2073 inline pw_aff get_pw_aff(int index) const;
2074 inline set gt_set(pw_aff_list list2) const;
2075 inline pw_aff_list insert(unsigned int pos, pw_aff el) const;
2076 inline set le_set(pw_aff_list list2) const;
2077 inline set lt_set(pw_aff_list list2) const;
2078 inline pw_aff max() const;
2079 inline pw_aff min() const;
2080 inline int n_pw_aff() const;
2081 inline set ne_set(pw_aff_list list2) const;
2082 inline pw_aff_list reverse() const;
2083 inline pw_aff_list set_pw_aff(int index, pw_aff el) const;
2084 inline int size() const;
2085 inline pw_aff_list swap(unsigned int pos1, unsigned int pos2) const;
2086};
2087
2088// declarations for isl::pw_multi_aff
2089inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2090inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2091
2092class pw_multi_aff {
2093 friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2094 friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2095
2096 isl_pw_multi_aff *ptr = nullptr;
2097
2098 inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
2099
2100public:
2101 inline /* implicit */ pw_multi_aff();
2102 inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
2103 inline /* implicit */ pw_multi_aff(std::nullptr_t);
2104 inline /* implicit */ pw_multi_aff(multi_aff ma);
2105 inline /* implicit */ pw_multi_aff(pw_aff pa);
2106 inline explicit pw_multi_aff(ctx ctx, const std::string &str);
2107 inline pw_multi_aff &operator=(pw_multi_aff obj);
2108 inline ~pw_multi_aff();
2109 inline __isl_give isl_pw_multi_aff *copy() const &;
2110 inline __isl_give isl_pw_multi_aff *copy() && = delete;
2111 inline __isl_keep isl_pw_multi_aff *get() const;
2112 inline __isl_give isl_pw_multi_aff *release();
2113 inline bool is_null() const;
2114 inline explicit operator bool() const;
2115 inline ctx get_ctx() const;
2116 inline std::string to_str() const;
2117 inline void dump() const;
2118
2119 inline pw_multi_aff add(pw_multi_aff pma2) const;
2120 inline pw_multi_aff align_params(space model) const;
2121 static inline pw_multi_aff alloc(set set, multi_aff maff);
2122 inline pw_multi_aff coalesce() const;
2123 inline unsigned int dim(isl::dim type) const;
2124 inline set domain() const;
2125 inline pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2126 inline pw_multi_aff drop_unused_params() const;
2127 static inline pw_multi_aff empty(space space);
2128 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2129 inline pw_multi_aff fix_si(isl::dim type, unsigned int pos, int value) const;
2130 inline pw_multi_aff flat_range_product(pw_multi_aff pma2) const;
2131 inline stat foreach_piece(const std::function<stat(set, multi_aff)> &fn) const;
2132 static inline pw_multi_aff from_domain(set set);
2133 static inline pw_multi_aff from_map(map map);
2134 static inline pw_multi_aff from_multi_pw_aff(multi_pw_aff mpa);
2135 static inline pw_multi_aff from_set(set set);
2136 inline id get_dim_id(isl::dim type, unsigned int pos) const;
2137 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2138 inline space get_domain_space() const;
2139 inline pw_aff get_pw_aff(int pos) const;
2140 inline space get_space() const;
2141 inline id get_tuple_id(isl::dim type) const;
2142 inline std::string get_tuple_name(isl::dim type) const;
2143 inline pw_multi_aff gist(set set) const;
2144 inline pw_multi_aff gist_params(set set) const;
2145 inline boolean has_tuple_id(isl::dim type) const;
2146 inline boolean has_tuple_name(isl::dim type) const;
2147 static inline pw_multi_aff identity(space space);
2148 inline pw_multi_aff intersect_domain(set set) const;
2149 inline pw_multi_aff intersect_params(set set) const;
2150 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2151 inline boolean involves_nan() const;
2152 inline boolean is_equal(const pw_multi_aff &pma2) const;
2153 static inline pw_multi_aff multi_val_on_domain(set domain, multi_val mv);
2154 inline int n_piece() const;
2155 inline pw_multi_aff neg() const;
2156 inline boolean plain_is_equal(const pw_multi_aff &pma2) const;
2157 inline pw_multi_aff product(pw_multi_aff pma2) const;
2158 inline pw_multi_aff project_domain_on_params() const;
2159 static inline pw_multi_aff project_out_map(space space, isl::dim type, unsigned int first, unsigned int n);
2160 inline pw_multi_aff pullback(multi_aff ma) const;
2161 inline pw_multi_aff pullback(pw_multi_aff pma2) const;
2162 static inline pw_multi_aff range_map(space space);
2163 inline pw_multi_aff range_product(pw_multi_aff pma2) const;
2164 inline pw_multi_aff reset_tuple_id(isl::dim type) const;
2165 inline pw_multi_aff reset_user() const;
2166 inline pw_multi_aff scale_down_val(val v) const;
2167 inline pw_multi_aff scale_multi_val(multi_val mv) const;
2168 inline pw_multi_aff scale_val(val v) const;
2169 inline pw_multi_aff set_dim_id(isl::dim type, unsigned int pos, id id) const;
2170 inline pw_multi_aff set_pw_aff(unsigned int pos, pw_aff pa) const;
2171 inline pw_multi_aff set_tuple_id(isl::dim type, id id) const;
2172 inline pw_multi_aff sub(pw_multi_aff pma2) const;
2173 inline pw_multi_aff subtract_domain(set set) const;
2174 inline pw_multi_aff union_add(pw_multi_aff pma2) const;
2175 inline pw_multi_aff union_lexmax(pw_multi_aff pma2) const;
2176 inline pw_multi_aff union_lexmin(pw_multi_aff pma2) const;
2177 static inline pw_multi_aff zero(space space);
2178};
2179
2180// declarations for isl::pw_multi_aff_list
2181inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2182inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2183
2184class pw_multi_aff_list {
2185 friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2186 friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2187
2188 isl_pw_multi_aff_list *ptr = nullptr;
2189
2190 inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
2191
2192public:
2193 inline /* implicit */ pw_multi_aff_list();
2194 inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
2195 inline /* implicit */ pw_multi_aff_list(std::nullptr_t);
2196 inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
2197 inline ~pw_multi_aff_list();
2198 inline __isl_give isl_pw_multi_aff_list *copy() const &;
2199 inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
2200 inline __isl_keep isl_pw_multi_aff_list *get() const;
2201 inline __isl_give isl_pw_multi_aff_list *release();
2202 inline bool is_null() const;
2203 inline explicit operator bool() const;
2204 inline ctx get_ctx() const;
2205 inline void dump() const;
2206
2207 inline pw_multi_aff_list add(pw_multi_aff el) const;
2208 static inline pw_multi_aff_list alloc(ctx ctx, int n);
2209 inline pw_multi_aff_list concat(pw_multi_aff_list list2) const;
2210 inline pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
2211 inline stat foreach(const std::function<stat(pw_multi_aff)> &fn) const;
2212 static inline pw_multi_aff_list from_pw_multi_aff(pw_multi_aff el);
2213 inline pw_multi_aff get_at(int index) const;
2214 inline pw_multi_aff get_pw_multi_aff(int index) const;
2215 inline pw_multi_aff_list insert(unsigned int pos, pw_multi_aff el) const;
2216 inline int n_pw_multi_aff() const;
2217 inline pw_multi_aff_list reverse() const;
2218 inline pw_multi_aff_list set_pw_multi_aff(int index, pw_multi_aff el) const;
2219 inline int size() const;
2220 inline pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const;
2221};
2222
2223// declarations for isl::pw_qpolynomial
2224inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2225inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2226
2227class pw_qpolynomial {
2228 friend inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2229 friend inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2230
2231 isl_pw_qpolynomial *ptr = nullptr;
2232
2233 inline explicit pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr);
2234
2235public:
2236 inline /* implicit */ pw_qpolynomial();
2237 inline /* implicit */ pw_qpolynomial(const pw_qpolynomial &obj);
2238 inline /* implicit */ pw_qpolynomial(std::nullptr_t);
2239 inline explicit pw_qpolynomial(ctx ctx, const std::string &str);
2240 inline pw_qpolynomial &operator=(pw_qpolynomial obj);
2241 inline ~pw_qpolynomial();
2242 inline __isl_give isl_pw_qpolynomial *copy() const &;
2243 inline __isl_give isl_pw_qpolynomial *copy() && = delete;
2244 inline __isl_keep isl_pw_qpolynomial *get() const;
2245 inline __isl_give isl_pw_qpolynomial *release();
2246 inline bool is_null() const;
2247 inline explicit operator bool() const;
2248 inline ctx get_ctx() const;
2249 inline std::string to_str() const;
2250 inline void dump() const;
2251
2252 inline pw_qpolynomial add(pw_qpolynomial pwqp2) const;
2253 inline pw_qpolynomial add_dims(isl::dim type, unsigned int n) const;
2254 static inline pw_qpolynomial alloc(set set, qpolynomial qp);
2255 inline pw_qpolynomial coalesce() const;
2256 inline unsigned int dim(isl::dim type) const;
2257 inline set domain() const;
2258 inline pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2259 inline pw_qpolynomial drop_unused_params() const;
2260 inline val eval(point pnt) const;
2261 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2262 inline pw_qpolynomial fix_val(isl::dim type, unsigned int n, val v) const;
2263 inline stat foreach_piece(const std::function<stat(set, qpolynomial)> &fn) const;
2264 static inline pw_qpolynomial from_pw_aff(pw_aff pwaff);
2265 static inline pw_qpolynomial from_qpolynomial(qpolynomial qp);
2266 inline pw_qpolynomial from_range() const;
2267 inline space get_domain_space() const;
2268 inline space get_space() const;
2269 inline pw_qpolynomial gist(set context) const;
2270 inline pw_qpolynomial gist_params(set context) const;
2271 inline boolean has_equal_space(const pw_qpolynomial &pwqp2) const;
2272 inline pw_qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2273 inline pw_qpolynomial intersect_domain(set set) const;
2274 inline pw_qpolynomial intersect_params(set set) const;
2275 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2276 inline boolean involves_nan() const;
2277 inline boolean is_zero() const;
2278 inline val max() const;
2279 inline val min() const;
2280 inline pw_qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2281 inline pw_qpolynomial mul(pw_qpolynomial pwqp2) const;
2282 inline int n_piece() const;
2283 inline pw_qpolynomial neg() const;
2284 inline boolean plain_is_equal(const pw_qpolynomial &pwqp2) const;
2285 inline pw_qpolynomial pow(unsigned int exponent) const;
2286 inline pw_qpolynomial project_domain_on_params() const;
2287 inline pw_qpolynomial reset_domain_space(space dim) const;
2288 inline pw_qpolynomial reset_user() const;
2289 inline pw_qpolynomial scale_down_val(val v) const;
2290 inline pw_qpolynomial scale_val(val v) const;
2291 inline pw_qpolynomial split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2292 inline pw_qpolynomial split_periods(int max_periods) const;
2293 inline pw_qpolynomial sub(pw_qpolynomial pwqp2) const;
2294 inline pw_qpolynomial subtract_domain(set set) const;
2295 inline pw_qpolynomial to_polynomial(int sign) const;
2296 static inline pw_qpolynomial zero(space dim);
2297};
2298
2299// declarations for isl::pw_qpolynomial_fold_list
2300inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2301inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr);
2302
2303class pw_qpolynomial_fold_list {
2304 friend inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2305 friend inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr);
2306
2307 isl_pw_qpolynomial_fold_list *ptr = nullptr;
2308
2309 inline explicit pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2310
2311public:
2312 inline /* implicit */ pw_qpolynomial_fold_list();
2313 inline /* implicit */ pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj);
2314 inline /* implicit */ pw_qpolynomial_fold_list(std::nullptr_t);
2315 inline pw_qpolynomial_fold_list &operator=(pw_qpolynomial_fold_list obj);
2316 inline ~pw_qpolynomial_fold_list();
2317 inline __isl_give isl_pw_qpolynomial_fold_list *copy() const &;
2318 inline __isl_give isl_pw_qpolynomial_fold_list *copy() && = delete;
2319 inline __isl_keep isl_pw_qpolynomial_fold_list *get() const;
2320 inline __isl_give isl_pw_qpolynomial_fold_list *release();
2321 inline bool is_null() const;
2322 inline explicit operator bool() const;
2323 inline ctx get_ctx() const;
2324 inline void dump() const;
2325
2326};
2327
2328// declarations for isl::pw_qpolynomial_list
2329inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr);
2330inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr);
2331
2332class pw_qpolynomial_list {
2333 friend inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr);
2334 friend inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr);
2335
2336 isl_pw_qpolynomial_list *ptr = nullptr;
2337
2338 inline explicit pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr);
2339
2340public:
2341 inline /* implicit */ pw_qpolynomial_list();
2342 inline /* implicit */ pw_qpolynomial_list(const pw_qpolynomial_list &obj);
2343 inline /* implicit */ pw_qpolynomial_list(std::nullptr_t);
2344 inline pw_qpolynomial_list &operator=(pw_qpolynomial_list obj);
2345 inline ~pw_qpolynomial_list();
2346 inline __isl_give isl_pw_qpolynomial_list *copy() const &;
2347 inline __isl_give isl_pw_qpolynomial_list *copy() && = delete;
2348 inline __isl_keep isl_pw_qpolynomial_list *get() const;
2349 inline __isl_give isl_pw_qpolynomial_list *release();
2350 inline bool is_null() const;
2351 inline explicit operator bool() const;
2352 inline ctx get_ctx() const;
2353 inline void dump() const;
2354
2355 inline pw_qpolynomial_list add(pw_qpolynomial el) const;
2356 static inline pw_qpolynomial_list alloc(ctx ctx, int n);
2357 inline pw_qpolynomial_list concat(pw_qpolynomial_list list2) const;
2358 inline pw_qpolynomial_list drop(unsigned int first, unsigned int n) const;
2359 inline stat foreach(const std::function<stat(pw_qpolynomial)> &fn) const;
2360 static inline pw_qpolynomial_list from_pw_qpolynomial(pw_qpolynomial el);
2361 inline pw_qpolynomial get_at(int index) const;
2362 inline pw_qpolynomial get_pw_qpolynomial(int index) const;
2363 inline pw_qpolynomial_list insert(unsigned int pos, pw_qpolynomial el) const;
2364 inline int n_pw_qpolynomial() const;
2365 inline pw_qpolynomial_list reverse() const;
2366 inline pw_qpolynomial_list set_pw_qpolynomial(int index, pw_qpolynomial el) const;
2367 inline int size() const;
2368 inline pw_qpolynomial_list swap(unsigned int pos1, unsigned int pos2) const;
2369};
2370
2371// declarations for isl::qpolynomial
2372inline qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2373inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2374
2375class qpolynomial {
2376 friend inline qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2377 friend inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2378
2379 isl_qpolynomial *ptr = nullptr;
2380
2381 inline explicit qpolynomial(__isl_take isl_qpolynomial *ptr);
2382
2383public:
2384 inline /* implicit */ qpolynomial();
2385 inline /* implicit */ qpolynomial(const qpolynomial &obj);
2386 inline /* implicit */ qpolynomial(std::nullptr_t);
2387 inline qpolynomial &operator=(qpolynomial obj);
2388 inline ~qpolynomial();
2389 inline __isl_give isl_qpolynomial *copy() const &;
2390 inline __isl_give isl_qpolynomial *copy() && = delete;
2391 inline __isl_keep isl_qpolynomial *get() const;
2392 inline __isl_give isl_qpolynomial *release();
2393 inline bool is_null() const;
2394 inline explicit operator bool() const;
2395 inline ctx get_ctx() const;
2396 inline void dump() const;
2397
2398 inline qpolynomial add(qpolynomial qp2) const;
2399 inline qpolynomial add_dims(isl::dim type, unsigned int n) const;
2400 inline qpolynomial align_params(space model) const;
2401 inline stat as_polynomial_on_domain(const basic_set &bset, const std::function<stat(basic_set, qpolynomial)> &fn) const;
2402 inline unsigned int dim(isl::dim type) const;
2403 inline qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2404 inline val eval(point pnt) const;
2405 inline stat foreach_term(const std::function<stat(term)> &fn) const;
2406 static inline qpolynomial from_aff(aff aff);
2407 static inline qpolynomial from_constraint(constraint c, isl::dim type, unsigned int pos);
2408 static inline qpolynomial from_term(term term);
2409 inline val get_constant_val() const;
2410 inline space get_domain_space() const;
2411 inline space get_space() const;
2412 inline qpolynomial gist(set context) const;
2413 inline qpolynomial gist_params(set context) const;
2414 inline qpolynomial homogenize() const;
2415 static inline qpolynomial infty_on_domain(space dim);
2416 inline qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2417 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2418 inline boolean is_infty() const;
2419 inline boolean is_nan() const;
2420 inline boolean is_neginfty() const;
2421 inline boolean is_zero() const;
2422 inline qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2423 inline qpolynomial mul(qpolynomial qp2) const;
2424 static inline qpolynomial nan_on_domain(space dim);
2425 inline qpolynomial neg() const;
2426 static inline qpolynomial neginfty_on_domain(space dim);
2427 static inline qpolynomial one_on_domain(space dim);
2428 inline boolean plain_is_equal(const qpolynomial &qp2) const;
2429 inline qpolynomial pow(unsigned int power) const;
2430 inline qpolynomial project_domain_on_params() const;
2431 inline qpolynomial scale_down_val(val v) const;
2432 inline qpolynomial scale_val(val v) const;
2433 inline int sgn() const;
2434 inline qpolynomial sub(qpolynomial qp2) const;
2435 static inline qpolynomial val_on_domain(space space, val val);
2436 static inline qpolynomial var_on_domain(space dim, isl::dim type, unsigned int pos);
2437 static inline qpolynomial zero_on_domain(space dim);
2438};
2439
2440// declarations for isl::schedule
2441inline schedule manage(__isl_take isl_schedule *ptr);
2442inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2443
2444class schedule {
2445 friend inline schedule manage(__isl_take isl_schedule *ptr);
2446 friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2447
2448 isl_schedule *ptr = nullptr;
2449
2450 inline explicit schedule(__isl_take isl_schedule *ptr);
2451
2452public:
2453 inline /* implicit */ schedule();
2454 inline /* implicit */ schedule(const schedule &obj);
2455 inline /* implicit */ schedule(std::nullptr_t);
2456 inline explicit schedule(ctx ctx, const std::string &str);
2457 inline schedule &operator=(schedule obj);
2458 inline ~schedule();
2459 inline __isl_give isl_schedule *copy() const &;
2460 inline __isl_give isl_schedule *copy() && = delete;
2461 inline __isl_keep isl_schedule *get() const;
2462 inline __isl_give isl_schedule *release();
2463 inline bool is_null() const;
2464 inline explicit operator bool() const;
2465 inline ctx get_ctx() const;
2466 inline std::string to_str() const;
2467 inline void dump() const;
2468
2469 inline schedule align_params(space space) const;
2470 static inline schedule empty(space space);
2471 static inline schedule from_domain(union_set domain);
2472 inline union_set get_domain() const;
2473 inline union_map get_map() const;
2474 inline schedule_node get_root() const;
2475 inline schedule gist_domain_params(set context) const;
2476 inline schedule insert_context(set context) const;
2477 inline schedule insert_guard(set guard) const;
2478 inline schedule insert_partial_schedule(multi_union_pw_aff partial) const;
2479 inline schedule intersect_domain(union_set domain) const;
2480 inline boolean plain_is_equal(const schedule &schedule2) const;
2481 inline schedule pullback(union_pw_multi_aff upma) const;
2482 inline schedule reset_user() const;
2483 inline schedule sequence(schedule schedule2) const;
2484};
2485
2486// declarations for isl::schedule_constraints
2487inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2488inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2489
2490class schedule_constraints {
2491 friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2492 friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2493
2494 isl_schedule_constraints *ptr = nullptr;
2495
2496 inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
2497
2498public:
2499 inline /* implicit */ schedule_constraints();
2500 inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
2501 inline /* implicit */ schedule_constraints(std::nullptr_t);
2502 inline explicit schedule_constraints(ctx ctx, const std::string &str);
2503 inline schedule_constraints &operator=(schedule_constraints obj);
2504 inline ~schedule_constraints();
2505 inline __isl_give isl_schedule_constraints *copy() const &;
2506 inline __isl_give isl_schedule_constraints *copy() && = delete;
2507 inline __isl_keep isl_schedule_constraints *get() const;
2508 inline __isl_give isl_schedule_constraints *release();
2509 inline bool is_null() const;
2510 inline explicit operator bool() const;
2511 inline ctx get_ctx() const;
2512 inline std::string to_str() const;
2513 inline void dump() const;
2514
2515 inline schedule_constraints apply(union_map umap) const;
2516 inline schedule compute_schedule() const;
2517 inline union_map get_coincidence() const;
2518 inline union_map get_conditional_validity() const;
2519 inline union_map get_conditional_validity_condition() const;
2520 inline set get_context() const;
2521 inline union_set get_domain() const;
2522 inline union_map get_proximity() const;
2523 inline union_map get_validity() const;
2524 static inline schedule_constraints on_domain(union_set domain);
2525 inline schedule_constraints set_coincidence(union_map coincidence) const;
2526 inline schedule_constraints set_conditional_validity(union_map condition, union_map validity) const;
2527 inline schedule_constraints set_context(set context) const;
2528 inline schedule_constraints set_proximity(union_map proximity) const;
2529 inline schedule_constraints set_validity(union_map validity) const;
2530};
2531
2532// declarations for isl::schedule_node
2533inline schedule_node manage(__isl_take isl_schedule_node *ptr);
2534inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2535
2536class schedule_node {
2537 friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
2538 friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2539
2540 isl_schedule_node *ptr = nullptr;
2541
2542 inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
2543
2544public:
2545 inline /* implicit */ schedule_node();
2546 inline /* implicit */ schedule_node(const schedule_node &obj);
2547 inline /* implicit */ schedule_node(std::nullptr_t);
2548 inline schedule_node &operator=(schedule_node obj);
2549 inline ~schedule_node();
2550 inline __isl_give isl_schedule_node *copy() const &;
2551 inline __isl_give isl_schedule_node *copy() && = delete;
2552 inline __isl_keep isl_schedule_node *get() const;
2553 inline __isl_give isl_schedule_node *release();
2554 inline bool is_null() const;
2555 inline explicit operator bool() const;
2556 inline ctx get_ctx() const;
2557 inline std::string to_str() const;
2558 inline void dump() const;
2559
2560 inline schedule_node align_params(space space) const;
2561 inline schedule_node ancestor(int generation) const;
2562 inline boolean band_member_get_coincident(int pos) const;
2563 inline schedule_node band_member_set_coincident(int pos, int coincident) const;
2564 inline schedule_node band_set_ast_build_options(union_set options) const;
2565 inline schedule_node child(int pos) const;
2566 inline set context_get_context() const;
2567 inline schedule_node cut() const;
2568 inline union_set domain_get_domain() const;
2569 inline union_pw_multi_aff expansion_get_contraction() const;
2570 inline union_map expansion_get_expansion() const;
2571 inline union_map extension_get_extension() const;
2572 inline union_set filter_get_filter() const;
2573 inline schedule_node first_child() const;
2574 inline stat foreach_ancestor_top_down(const std::function<stat(schedule_node)> &fn) const;
2575 static inline schedule_node from_domain(union_set domain);
2576 static inline schedule_node from_extension(union_map extension);
2577 inline int get_ancestor_child_position(const schedule_node &ancestor) const;
2578 inline schedule_node get_child(int pos) const;
2579 inline int get_child_position() const;
2580 inline union_set get_domain() const;
2581 inline multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
2582 inline union_map get_prefix_schedule_relation() const;
2583 inline union_map get_prefix_schedule_union_map() const;
2584 inline union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
2585 inline schedule get_schedule() const;
2586 inline int get_schedule_depth() const;
2587 inline schedule_node get_shared_ancestor(const schedule_node &node2) const;
2588 inline union_pw_multi_aff get_subtree_contraction() const;
2589 inline union_map get_subtree_expansion() const;
2590 inline union_map get_subtree_schedule_union_map() const;
2591 inline int get_tree_depth() const;
2592 inline union_set get_universe_domain() const;
2593 inline schedule_node graft_after(schedule_node graft) const;
2594 inline schedule_node graft_before(schedule_node graft) const;
2595 inline schedule_node group(id group_id) const;
2596 inline set guard_get_guard() const;
2597 inline boolean has_children() const;
2598 inline boolean has_next_sibling() const;
2599 inline boolean has_parent() const;
2600 inline boolean has_previous_sibling() const;
2601 inline schedule_node insert_context(set context) const;
2602 inline schedule_node insert_filter(union_set filter) const;
2603 inline schedule_node insert_guard(set context) const;
2604 inline schedule_node insert_mark(id mark) const;
2605 inline schedule_node insert_partial_schedule(multi_union_pw_aff schedule) const;
2606 inline schedule_node insert_sequence(union_set_list filters) const;
2607 inline schedule_node insert_set(union_set_list filters) const;
2608 inline boolean is_equal(const schedule_node &node2) const;
2609 inline boolean is_subtree_anchored() const;
2610 inline id mark_get_id() const;
2611 inline int n_children() const;
2612 inline schedule_node next_sibling() const;
2613 inline schedule_node order_after(union_set filter) const;
2614 inline schedule_node order_before(union_set filter) const;
2615 inline schedule_node parent() const;
2616 inline schedule_node previous_sibling() const;
2617 inline schedule_node reset_user() const;
2618 inline schedule_node root() const;
2619 inline schedule_node sequence_splice_child(int pos) const;
2620};
2621
2622// declarations for isl::set
2623inline set manage(__isl_take isl_set *ptr);
2624inline set manage_copy(__isl_keep isl_set *ptr);
2625
2626class set {
2627 friend inline set manage(__isl_take isl_set *ptr);
2628 friend inline set manage_copy(__isl_keep isl_set *ptr);
2629
2630 isl_set *ptr = nullptr;
2631
2632 inline explicit set(__isl_take isl_set *ptr);
2633
2634public:
2635 inline /* implicit */ set();
2636 inline /* implicit */ set(const set &obj);
2637 inline /* implicit */ set(std::nullptr_t);
2638 inline explicit set(ctx ctx, const std::string &str);
2639 inline /* implicit */ set(basic_set bset);
2640 inline /* implicit */ set(point pnt);
2641 inline explicit set(union_set uset);
2642 inline set &operator=(set obj);
2643 inline ~set();
2644 inline __isl_give isl_set *copy() const &;
2645 inline __isl_give isl_set *copy() && = delete;
2646 inline __isl_keep isl_set *get() const;
2647 inline __isl_give isl_set *release();
2648 inline bool is_null() const;
2649 inline explicit operator bool() const;
2650 inline ctx get_ctx() const;
2651 inline std::string to_str() const;
2652 inline void dump() const;
2653
2654 inline set add_constraint(constraint constraint) const;
2655 inline set add_dims(isl::dim type, unsigned int n) const;
2656 inline basic_set affine_hull() const;
2657 inline set align_params(space model) const;
2658 inline set apply(map map) const;
2659 inline basic_set bounded_simple_hull() const;
2660 static inline set box_from_points(point pnt1, point pnt2);
2661 inline set coalesce() const;
2662 inline basic_set coefficients() const;
2663 inline set complement() const;
2664 inline basic_set convex_hull() const;
2665 inline val count_val() const;
2666 inline set detect_equalities() const;
2667 inline unsigned int dim(isl::dim type) const;
2668 inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
2669 inline boolean dim_has_any_upper_bound(isl::dim type, unsigned int pos) const;
2670 inline boolean dim_has_lower_bound(isl::dim type, unsigned int pos) const;
2671 inline boolean dim_has_upper_bound(isl::dim type, unsigned int pos) const;
2672 inline boolean dim_is_bounded(isl::dim type, unsigned int pos) const;
2673 inline pw_aff dim_max(int pos) const;
2674 inline pw_aff dim_min(int pos) const;
2675 inline set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2676 inline set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2677 inline set drop_unused_params() const;
2678 inline set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
2679 static inline set empty(space space);
2680 inline set equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2681 inline int find_dim_by_id(isl::dim type, const id &id) const;
2682 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2683 inline set fix_si(isl::dim type, unsigned int pos, int value) const;
2684 inline set fix_val(isl::dim type, unsigned int pos, val v) const;
2685 inline set flat_product(set set2) const;
2686 inline set flatten() const;
2687 inline map flatten_map() const;
2688 inline int follows_at(const set &set2, int pos) const;
2689 inline stat foreach_basic_set(const std::function<stat(basic_set)> &fn) const;
2690 inline stat foreach_point(const std::function<stat(point)> &fn) const;
2691 static inline set from_multi_aff(multi_aff ma);
2692 static inline set from_multi_pw_aff(multi_pw_aff mpa);
2693 inline set from_params() const;
2694 static inline set from_pw_aff(pw_aff pwaff);
2695 static inline set from_pw_multi_aff(pw_multi_aff pma);
2696 inline basic_set_list get_basic_set_list() const;
2697 inline id get_dim_id(isl::dim type, unsigned int pos) const;
2698 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2699 inline space get_space() const;
2700 inline val get_stride(int pos) const;
2701 inline id get_tuple_id() const;
2702 inline std::string get_tuple_name() const;
2703 inline set gist(set context) const;
2704 inline set gist_basic_set(basic_set context) const;
2705 inline set gist_params(set context) const;
2706 inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
2707 inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
2708 inline boolean has_equal_space(const set &set2) const;
2709 inline boolean has_tuple_id() const;
2710 inline boolean has_tuple_name() const;
2711 inline map identity() const;
2712 inline pw_aff indicator_function() const;
2713 inline set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2714 inline set intersect(set set2) const;
2715 inline set intersect_params(set params) const;
2716 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2717 inline boolean is_bounded() const;
2718 inline boolean is_box() const;
2719 inline boolean is_disjoint(const set &set2) const;
2720 inline boolean is_empty() const;
2721 inline boolean is_equal(const set &set2) const;
2722 inline boolean is_params() const;
2723 inline boolean is_singleton() const;
2724 inline boolean is_strict_subset(const set &set2) const;
2725 inline boolean is_subset(const set &set2) const;
2726 inline boolean is_wrapping() const;
2727 inline map lex_ge_set(set set2) const;
2728 inline map lex_gt_set(set set2) const;
2729 inline map lex_le_set(set set2) const;
2730 inline map lex_lt_set(set set2) const;
2731 inline set lexmax() const;
2732 inline pw_multi_aff lexmax_pw_multi_aff() const;
2733 inline set lexmin() const;
2734 inline pw_multi_aff lexmin_pw_multi_aff() const;
2735 inline set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2736 inline set lower_bound_val(isl::dim type, unsigned int pos, val value) const;
2737 inline val max_val(const aff &obj) const;
2738 inline val min_val(const aff &obj) const;
2739 inline set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2740 inline int n_basic_set() const;
2741 inline unsigned int n_dim() const;
2742 static inline set nat_universe(space dim);
2743 inline set neg() const;
2744 inline set params() const;
2745 inline int plain_cmp(const set &set2) const;
2746 inline val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
2747 inline boolean plain_is_disjoint(const set &set2) const;
2748 inline boolean plain_is_empty() const;
2749 inline boolean plain_is_equal(const set &set2) const;
2750 inline boolean plain_is_universe() const;
2751 inline basic_set plain_unshifted_simple_hull() const;
2752 inline basic_set polyhedral_hull() const;
2753 inline set preimage_multi_aff(multi_aff ma) const;
2754 inline set preimage_multi_pw_aff(multi_pw_aff mpa) const;
2755 inline set preimage_pw_multi_aff(pw_multi_aff pma) const;
2756 inline set product(set set2) const;
2757 inline map project_onto_map(isl::dim type, unsigned int first, unsigned int n) const;
2758 inline set project_out(isl::dim type, unsigned int first, unsigned int n) const;
2759 inline set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
2760 inline set remove_divs() const;
2761 inline set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2762 inline set remove_redundancies() const;
2763 inline set remove_unknown_divs() const;
2764 inline set reset_space(space dim) const;
2765 inline set reset_tuple_id() const;
2766 inline set reset_user() const;
2767 inline basic_set sample() const;
2768 inline point sample_point() const;
2769 inline set set_dim_id(isl::dim type, unsigned int pos, id id) const;
2770 inline set set_tuple_id(id id) const;
2771 inline set set_tuple_name(const std::string &s) const;
2772 inline basic_set simple_hull() const;
2773 inline int size() const;
2774 inline basic_set solutions() const;
2775 inline set split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2776 inline set subtract(set set2) const;
2777 inline set sum(set set2) const;
2778 inline set unite(set set2) const;
2779 static inline set universe(space space);
2780 inline basic_set unshifted_simple_hull() const;
2781 inline basic_set unshifted_simple_hull_from_set_list(set_list list) const;
2782 inline map unwrap() const;
2783 inline set upper_bound_si(isl::dim type, unsigned int pos, int value) const;
2784 inline set upper_bound_val(isl::dim type, unsigned int pos, val value) const;
2785 inline map wrapped_domain_map() const;
2786};
2787
2788// declarations for isl::set_list
2789inline set_list manage(__isl_take isl_set_list *ptr);
2790inline set_list manage_copy(__isl_keep isl_set_list *ptr);
2791
2792class set_list {
2793 friend inline set_list manage(__isl_take isl_set_list *ptr);
2794 friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
2795
2796 isl_set_list *ptr = nullptr;
2797
2798 inline explicit set_list(__isl_take isl_set_list *ptr);
2799
2800public:
2801 inline /* implicit */ set_list();
2802 inline /* implicit */ set_list(const set_list &obj);
2803 inline /* implicit */ set_list(std::nullptr_t);
2804 inline set_list &operator=(set_list obj);
2805 inline ~set_list();
2806 inline __isl_give isl_set_list *copy() const &;
2807 inline __isl_give isl_set_list *copy() && = delete;
2808 inline __isl_keep isl_set_list *get() const;
2809 inline __isl_give isl_set_list *release();
2810 inline bool is_null() const;
2811 inline explicit operator bool() const;
2812 inline ctx get_ctx() const;
2813 inline void dump() const;
2814
2815 inline set_list add(set el) const;
2816 static inline set_list alloc(ctx ctx, int n);
2817 inline set_list concat(set_list list2) const;
2818 inline set_list drop(unsigned int first, unsigned int n) const;
2819 inline stat foreach(const std::function<stat(set)> &fn) const;
2820 static inline set_list from_set(set el);
2821 inline set get_at(int index) const;
2822 inline set get_set(int index) const;
2823 inline set_list insert(unsigned int pos, set el) const;
2824 inline int n_set() const;
2825 inline set_list reverse() const;
2826 inline set_list set_set(int index, set el) const;
2827 inline int size() const;
2828 inline set_list swap(unsigned int pos1, unsigned int pos2) const;
2829 inline set unite() const;
2830};
2831
2832// declarations for isl::space
2833inline space manage(__isl_take isl_space *ptr);
2834inline space manage_copy(__isl_keep isl_space *ptr);
2835
2836class space {
2837 friend inline space manage(__isl_take isl_space *ptr);
2838 friend inline space manage_copy(__isl_keep isl_space *ptr);
2839
2840 isl_space *ptr = nullptr;
2841
2842 inline explicit space(__isl_take isl_space *ptr);
2843
2844public:
2845 inline /* implicit */ space();
2846 inline /* implicit */ space(const space &obj);
2847 inline /* implicit */ space(std::nullptr_t);
2848 inline explicit space(ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out);
2849 inline explicit space(ctx ctx, unsigned int nparam, unsigned int dim);
2850 inline space &operator=(space obj);
2851 inline ~space();
2852 inline __isl_give isl_space *copy() const &;
2853 inline __isl_give isl_space *copy() && = delete;
2854 inline __isl_keep isl_space *get() const;
2855 inline __isl_give isl_space *release();
2856 inline bool is_null() const;
2857 inline explicit operator bool() const;
2858 inline ctx get_ctx() const;
2859 inline std::string to_str() const;
2860 inline void dump() const;
2861
2862 inline space add_dims(isl::dim type, unsigned int n) const;
2863 inline space add_param_id(id id) const;
2864 inline space align_params(space dim2) const;
2865 inline boolean can_curry() const;
2866 inline boolean can_range_curry() const;
2867 inline boolean can_uncurry() const;
2868 inline boolean can_zip() const;
2869 inline space curry() const;
2870 inline unsigned int dim(isl::dim type) const;
2871 inline space domain() const;
2872 inline space domain_factor_domain() const;
2873 inline space domain_factor_range() const;
2874 inline boolean domain_is_wrapping() const;
2875 inline space domain_map() const;
2876 inline space domain_product(space right) const;
2877 inline space drop_dims(isl::dim type, unsigned int first, unsigned int num) const;
2878 inline space factor_domain() const;
2879 inline space factor_range() const;
2880 inline int find_dim_by_id(isl::dim type, const id &id) const;
2881 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2882 inline space flatten_domain() const;
2883 inline space flatten_range() const;
2884 inline space from_domain() const;
2885 inline space from_range() const;
2886 inline id get_dim_id(isl::dim type, unsigned int pos) const;
2887 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2888 inline id get_tuple_id(isl::dim type) const;
2889 inline std::string get_tuple_name(isl::dim type) const;
2890 inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
2891 inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
2892 inline boolean has_equal_params(const space &space2) const;
2893 inline boolean has_equal_tuples(const space &space2) const;
2894 inline boolean has_tuple_id(isl::dim type) const;
2895 inline boolean has_tuple_name(isl::dim type) const;
2896 inline space insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2897 inline boolean is_domain(const space &space2) const;
2898 inline boolean is_equal(const space &space2) const;
2899 inline boolean is_map() const;
2900 inline boolean is_params() const;
2901 inline boolean is_product() const;
2902 inline boolean is_range(const space &space2) const;
2903 inline boolean is_set() const;
2904 inline boolean is_wrapping() const;
2905 inline space join(space right) const;
2906 inline space map_from_domain_and_range(space range) const;
2907 inline space map_from_set() const;
2908 inline space move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2909 inline space params() const;
2910 static inline space params_alloc(ctx ctx, unsigned int nparam);
2911 inline space product(space right) const;
2912 inline space range() const;
2913 inline space range_curry() const;
2914 inline space range_factor_domain() const;
2915 inline space range_factor_range() const;
2916 inline boolean range_is_wrapping() const;
2917 inline space range_map() const;
2918 inline space range_product(space right) const;
2919 inline space reset_tuple_id(isl::dim type) const;
2920 inline space reset_user() const;
2921 inline space reverse() const;
2922 inline space set_dim_id(isl::dim type, unsigned int pos, id id) const;
2923 inline space set_from_params() const;
2924 inline space set_tuple_id(isl::dim type, id id) const;
2925 inline space set_tuple_name(isl::dim type, const std::string &s) const;
2926 inline boolean tuple_is_equal(isl::dim type1, const space &space2, isl::dim type2) const;
2927 inline space uncurry() const;
2928 inline space unwrap() const;
2929 inline space wrap() const;
2930 inline space zip() const;
2931};
2932
2933// declarations for isl::term
2934inline term manage(__isl_take isl_term *ptr);
2935inline term manage_copy(__isl_keep isl_term *ptr);
2936
2937class term {
2938 friend inline term manage(__isl_take isl_term *ptr);
2939 friend inline term manage_copy(__isl_keep isl_term *ptr);
2940
2941 isl_term *ptr = nullptr;
2942
2943 inline explicit term(__isl_take isl_term *ptr);
2944
2945public:
2946 inline /* implicit */ term();
2947 inline /* implicit */ term(const term &obj);
2948 inline /* implicit */ term(std::nullptr_t);
2949 inline term &operator=(term obj);
2950 inline ~term();
2951 inline __isl_give isl_term *copy() const &;
2952 inline __isl_give isl_term *copy() && = delete;
2953 inline __isl_keep isl_term *get() const;
2954 inline __isl_give isl_term *release();
2955 inline bool is_null() const;
2956 inline explicit operator bool() const;
2957 inline ctx get_ctx() const;
2958
2959 inline unsigned int dim(isl::dim type) const;
2960 inline val get_coefficient_val() const;
2961 inline aff get_div(unsigned int pos) const;
2962 inline int get_exp(isl::dim type, unsigned int pos) const;
2963};
2964
2965// declarations for isl::union_access_info
2966inline union_access_info manage(__isl_take isl_union_access_info *ptr);
2967inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2968
2969class union_access_info {
2970 friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
2971 friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2972
2973 isl_union_access_info *ptr = nullptr;
2974
2975 inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
2976
2977public:
2978 inline /* implicit */ union_access_info();
2979 inline /* implicit */ union_access_info(const union_access_info &obj);
2980 inline /* implicit */ union_access_info(std::nullptr_t);
2981 inline explicit union_access_info(union_map sink);
2982 inline union_access_info &operator=(union_access_info obj);
2983 inline ~union_access_info();
2984 inline __isl_give isl_union_access_info *copy() const &;
2985 inline __isl_give isl_union_access_info *copy() && = delete;
2986 inline __isl_keep isl_union_access_info *get() const;
2987 inline __isl_give isl_union_access_info *release();
2988 inline bool is_null() const;
2989 inline explicit operator bool() const;
2990 inline ctx get_ctx() const;
2991 inline std::string to_str() const;
2992
2993 inline union_flow compute_flow() const;
2994 inline union_access_info set_kill(union_map kill) const;
2995 inline union_access_info set_may_source(union_map may_source) const;
2996 inline union_access_info set_must_source(union_map must_source) const;
2997 inline union_access_info set_schedule(schedule schedule) const;
2998 inline union_access_info set_schedule_map(union_map schedule_map) const;
2999};
3000
3001// declarations for isl::union_flow
3002inline union_flow manage(__isl_take isl_union_flow *ptr);
3003inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3004
3005class union_flow {
3006 friend inline union_flow manage(__isl_take isl_union_flow *ptr);
3007 friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3008
3009 isl_union_flow *ptr = nullptr;
3010
3011 inline explicit union_flow(__isl_take isl_union_flow *ptr);
3012
3013public:
3014 inline /* implicit */ union_flow();
3015 inline /* implicit */ union_flow(const union_flow &obj);
3016 inline /* implicit */ union_flow(std::nullptr_t);
3017 inline union_flow &operator=(union_flow obj);
3018 inline ~union_flow();
3019 inline __isl_give isl_union_flow *copy() const &;
3020 inline __isl_give isl_union_flow *copy() && = delete;
3021 inline __isl_keep isl_union_flow *get() const;
3022 inline __isl_give isl_union_flow *release();
3023 inline bool is_null() const;
3024 inline explicit operator bool() const;
3025 inline ctx get_ctx() const;
3026 inline std::string to_str() const;
3027
3028 inline union_map get_full_may_dependence() const;
3029 inline union_map get_full_must_dependence() const;
3030 inline union_map get_may_dependence() const;
3031 inline union_map get_may_no_source() const;
3032 inline union_map get_must_dependence() const;
3033 inline union_map get_must_no_source() const;
3034};
3035
3036// declarations for isl::union_map
3037inline union_map manage(__isl_take isl_union_map *ptr);
3038inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3039
3040class union_map {
3041 friend inline union_map manage(__isl_take isl_union_map *ptr);
3042 friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3043
3044 isl_union_map *ptr = nullptr;
3045
3046 inline explicit union_map(__isl_take isl_union_map *ptr);
3047
3048public:
3049 inline /* implicit */ union_map();
3050 inline /* implicit */ union_map(const union_map &obj);
3051 inline /* implicit */ union_map(std::nullptr_t);
3052 inline explicit union_map(union_pw_multi_aff upma);
3053 inline /* implicit */ union_map(basic_map bmap);
3054 inline /* implicit */ union_map(map map);
3055 inline explicit union_map(ctx ctx, const std::string &str);
3056 inline union_map &operator=(union_map obj);
3057 inline ~union_map();
3058 inline __isl_give isl_union_map *copy() const &;
3059 inline __isl_give isl_union_map *copy() && = delete;
3060 inline __isl_keep isl_union_map *get() const;
3061 inline __isl_give isl_union_map *release();
3062 inline bool is_null() const;
3063 inline explicit operator bool() const;
3064 inline ctx get_ctx() const;
3065 inline std::string to_str() const;
3066 inline void dump() const;
3067
3068 inline union_map add_map(map map) const;
3069 inline union_map affine_hull() const;
3070 inline union_map align_params(space model) const;
3071 inline union_map apply_domain(union_map umap2) const;
3072 inline union_map apply_range(union_map umap2) const;
3073 inline union_map coalesce() const;
3074 inline boolean contains(const space &space) const;
3075 inline union_map curry() const;
3076 inline union_set deltas() const;
3077 inline union_map deltas_map() const;
3078 inline union_map detect_equalities() const;
3079 inline unsigned int dim(isl::dim type) const;
3080 inline union_set domain() const;
3081 inline union_map domain_factor_domain() const;
3082 inline union_map domain_factor_range() const;
3083 inline union_map domain_map() const;
3084 inline union_pw_multi_aff domain_map_union_pw_multi_aff() const;
3085 inline union_map domain_product(union_map umap2) const;
3086 static inline union_map empty(space space);
3087 inline union_map eq_at(multi_union_pw_aff mupa) const;
3088 inline map extract_map(space dim) const;
3089 inline union_map factor_domain() const;
3090 inline union_map factor_range() const;
3091 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3092 inline union_map fixed_power(val exp) const;
3093 inline union_map flat_domain_product(union_map umap2) const;
3094 inline union_map flat_range_product(union_map umap2) const;
3095 inline stat foreach_map(const std::function<stat(map)> &fn) const;
3096 static inline union_map from(multi_union_pw_aff mupa);
3097 static inline union_map from_domain(union_set uset);
3098 static inline union_map from_domain_and_range(union_set domain, union_set range);
3099 static inline union_map from_range(union_set uset);
3100 static inline union_map from_union_pw_aff(union_pw_aff upa);
3101 inline id get_dim_id(isl::dim type, unsigned int pos) const;
3102 inline uint32_t get_hash() const;
3103 inline map_list get_map_list() const;
3104 inline space get_space() const;
3105 inline union_map gist(union_map context) const;
3106 inline union_map gist_domain(union_set uset) const;
3107 inline union_map gist_params(set set) const;
3108 inline union_map gist_range(union_set uset) const;
3109 inline union_map intersect(union_map umap2) const;
3110 inline union_map intersect_domain(union_set uset) const;
3111 inline union_map intersect_params(set set) const;
3112 inline union_map intersect_range(union_set uset) const;
3113 inline union_map intersect_range_factor_range(union_map factor) const;
3114 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
3115 inline boolean is_bijective() const;
3116 inline boolean is_disjoint(const union_map &umap2) const;
3117 inline boolean is_empty() const;
3118 inline boolean is_equal(const union_map &umap2) const;
3119 inline boolean is_identity() const;
3120 inline boolean is_injective() const;
3121 inline boolean is_single_valued() const;
3122 inline boolean is_strict_subset(const union_map &umap2) const;
3123 inline boolean is_subset(const union_map &umap2) const;
3124 inline union_map lex_ge_union_map(union_map umap2) const;
3125 inline union_map lex_gt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const;
3126 inline union_map lex_gt_union_map(union_map umap2) const;
3127 inline union_map lex_le_union_map(union_map umap2) const;
3128 inline union_map lex_lt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const;
3129 inline union_map lex_lt_union_map(union_map umap2) const;
3130 inline union_map lexmax() const;
3131 inline union_map lexmin() const;
3132 inline int n_map() const;
3133 inline set params() const;
3134 inline boolean plain_is_empty() const;
3135 inline boolean plain_is_injective() const;
3136 inline union_map polyhedral_hull() const;
3137 inline union_map preimage_domain_multi_aff(multi_aff ma) const;
3138 inline union_map preimage_domain_multi_pw_aff(multi_pw_aff mpa) const;
3139 inline union_map preimage_domain_pw_multi_aff(pw_multi_aff pma) const;
3140 inline union_map preimage_domain_union_pw_multi_aff(union_pw_multi_aff upma) const;
3141 inline union_map preimage_range_multi_aff(multi_aff ma) const;
3142 inline union_map preimage_range_pw_multi_aff(pw_multi_aff pma) const;
3143 inline union_map preimage_range_union_pw_multi_aff(union_pw_multi_aff upma) const;
3144 inline union_map product(union_map umap2) const;
3145 inline union_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
3146 inline union_map project_out_all_params() const;
3147 inline union_set range() const;
3148 inline union_map range_curry() const;
3149 inline union_map range_factor_domain() const;
3150 inline union_map range_factor_range() const;
3151 inline union_map range_map() const;
3152 inline union_map range_product(union_map umap2) const;
3153 inline union_map remove_divs() const;
3154 inline union_map remove_redundancies() const;
3155 inline union_map reset_user() const;
3156 inline union_map reverse() const;
3157 inline basic_map sample() const;
3158 inline union_map simple_hull() const;
3159 inline union_map subtract(union_map umap2) const;
3160 inline union_map subtract_domain(union_set dom) const;
3161 inline union_map subtract_range(union_set dom) const;
3162 inline union_map uncurry() const;
3163 inline union_map unite(union_map umap2) const;
3164 inline union_map universe() const;
3165 inline union_set wrap() const;
3166 inline union_map zip() const;
3167};
3168
3169// declarations for isl::union_map_list
3170inline union_map_list manage(__isl_take isl_union_map_list *ptr);
3171inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
3172
3173class union_map_list {
3174 friend inline union_map_list manage(__isl_take isl_union_map_list *ptr);
3175 friend inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
3176
3177 isl_union_map_list *ptr = nullptr;
3178
3179 inline explicit union_map_list(__isl_take isl_union_map_list *ptr);
3180
3181public:
3182 inline /* implicit */ union_map_list();
3183 inline /* implicit */ union_map_list(const union_map_list &obj);
3184 inline /* implicit */ union_map_list(std::nullptr_t);
3185 inline union_map_list &operator=(union_map_list obj);
3186 inline ~union_map_list();
3187 inline __isl_give isl_union_map_list *copy() const &;
3188 inline __isl_give isl_union_map_list *copy() && = delete;
3189 inline __isl_keep isl_union_map_list *get() const;
3190 inline __isl_give isl_union_map_list *release();
3191 inline bool is_null() const;
3192 inline explicit operator bool() const;
3193 inline ctx get_ctx() const;
3194 inline void dump() const;
3195
3196 inline union_map_list add(union_map el) const;
3197 static inline union_map_list alloc(ctx ctx, int n);
3198 inline union_map_list concat(union_map_list list2) const;
3199 inline union_map_list drop(unsigned int first, unsigned int n) const;
3200 inline stat foreach(const std::function<stat(union_map)> &fn) const;
3201 static inline union_map_list from_union_map(union_map el);
3202 inline union_map get_at(int index) const;
3203 inline union_map get_union_map(int index) const;
3204 inline union_map_list insert(unsigned int pos, union_map el) const;
3205 inline int n_union_map() const;
3206 inline union_map_list reverse() const;
3207 inline union_map_list set_union_map(int index, union_map el) const;
3208 inline int size() const;
3209 inline union_map_list swap(unsigned int pos1, unsigned int pos2) const;
3210};
3211
3212// declarations for isl::union_pw_aff
3213inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3214inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3215
3216class union_pw_aff {
3217 friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3218 friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3219
3220 isl_union_pw_aff *ptr = nullptr;
3221
3222 inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
3223
3224public:
3225 inline /* implicit */ union_pw_aff();
3226 inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
3227 inline /* implicit */ union_pw_aff(std::nullptr_t);
3228 inline /* implicit */ union_pw_aff(pw_aff pa);
3229 inline explicit union_pw_aff(union_set domain, val v);
3230 inline explicit union_pw_aff(ctx ctx, const std::string &str);
3231 inline union_pw_aff &operator=(union_pw_aff obj);
3232 inline ~union_pw_aff();
3233 inline __isl_give isl_union_pw_aff *copy() const &;
3234 inline __isl_give isl_union_pw_aff *copy() && = delete;
3235 inline __isl_keep isl_union_pw_aff *get() const;
3236 inline __isl_give isl_union_pw_aff *release();
3237 inline bool is_null() const;
3238 inline explicit operator bool() const;
3239 inline ctx get_ctx() const;
3240 inline std::string to_str() const;
3241 inline void dump() const;
3242
3243 inline union_pw_aff add(union_pw_aff upa2) const;
3244 inline union_pw_aff add_pw_aff(pw_aff pa) const;
3245 static inline union_pw_aff aff_on_domain(union_set domain, aff aff);
3246 inline union_pw_aff align_params(space model) const;
3247 inline union_pw_aff coalesce() const;
3248 inline unsigned int dim(isl::dim type) const;
3249 inline union_set domain() const;
3250 inline union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3251 static inline union_pw_aff empty(space space);
3252 inline pw_aff extract_pw_aff(space space) const;
3253 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3254 inline union_pw_aff floor() const;
3255 inline stat foreach_pw_aff(const std::function<stat(pw_aff)> &fn) const;
3256 inline pw_aff_list get_pw_aff_list() const;
3257 inline space get_space() const;
3258 inline union_pw_aff gist(union_set context) const;
3259 inline union_pw_aff gist_params(set context) const;
3260 inline union_pw_aff intersect_domain(union_set uset) const;
3261 inline union_pw_aff intersect_params(set set) const;
3262 inline boolean involves_nan() const;
3263 inline val max_val() const;
3264 inline val min_val() const;
3265 inline union_pw_aff mod_val(val f) const;
3266 inline int n_pw_aff() const;
3267 inline union_pw_aff neg() const;
3268 static inline union_pw_aff param_on_domain_id(union_set domain, id id);
3269 inline boolean plain_is_equal(const union_pw_aff &upa2) const;
3270 inline union_pw_aff pullback(union_pw_multi_aff upma) const;
3271 static inline union_pw_aff pw_aff_on_domain(union_set domain, pw_aff pa);
3272 inline union_pw_aff reset_user() const;
3273 inline union_pw_aff scale_down_val(val v) const;
3274 inline union_pw_aff scale_val(val v) const;
3275 inline union_pw_aff sub(union_pw_aff upa2) const;
3276 inline union_pw_aff subtract_domain(union_set uset) const;
3277 inline union_pw_aff union_add(union_pw_aff upa2) const;
3278 inline union_set zero_union_set() const;
3279};
3280
3281// declarations for isl::union_pw_aff_list
3282inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3283inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3284
3285class union_pw_aff_list {
3286 friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3287 friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3288
3289 isl_union_pw_aff_list *ptr = nullptr;
3290
3291 inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
3292
3293public:
3294 inline /* implicit */ union_pw_aff_list();
3295 inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
3296 inline /* implicit */ union_pw_aff_list(std::nullptr_t);
3297 inline union_pw_aff_list &operator=(union_pw_aff_list obj);
3298 inline ~union_pw_aff_list();
3299 inline __isl_give isl_union_pw_aff_list *copy() const &;
3300 inline __isl_give isl_union_pw_aff_list *copy() && = delete;
3301 inline __isl_keep isl_union_pw_aff_list *get() const;
3302 inline __isl_give isl_union_pw_aff_list *release();
3303 inline bool is_null() const;
3304 inline explicit operator bool() const;
3305 inline ctx get_ctx() const;
3306 inline void dump() const;
3307
3308 inline union_pw_aff_list add(union_pw_aff el) const;
3309 static inline union_pw_aff_list alloc(ctx ctx, int n);
3310 inline union_pw_aff_list concat(union_pw_aff_list list2) const;
3311 inline union_pw_aff_list drop(unsigned int first, unsigned int n) const;
3312 inline stat foreach(const std::function<stat(union_pw_aff)> &fn) const;
3313 static inline union_pw_aff_list from_union_pw_aff(union_pw_aff el);
3314 inline union_pw_aff get_at(int index) const;
3315 inline union_pw_aff get_union_pw_aff(int index) const;
3316 inline union_pw_aff_list insert(unsigned int pos, union_pw_aff el) const;
3317 inline int n_union_pw_aff() const;
3318 inline union_pw_aff_list reverse() const;
3319 inline union_pw_aff_list set_union_pw_aff(int index, union_pw_aff el) const;
3320 inline int size() const;
3321 inline union_pw_aff_list swap(unsigned int pos1, unsigned int pos2) const;
3322};
3323
3324// declarations for isl::union_pw_multi_aff
3325inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3326inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3327
3328class union_pw_multi_aff {
3329 friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3330 friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3331
3332 isl_union_pw_multi_aff *ptr = nullptr;
3333
3334 inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
3335
3336public:
3337 inline /* implicit */ union_pw_multi_aff();
3338 inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
3339 inline /* implicit */ union_pw_multi_aff(std::nullptr_t);
3340 inline /* implicit */ union_pw_multi_aff(aff aff);
3341 inline /* implicit */ union_pw_multi_aff(pw_multi_aff pma);
3342 inline explicit union_pw_multi_aff(union_set uset);
3343 inline explicit union_pw_multi_aff(union_map umap);
3344 inline explicit union_pw_multi_aff(ctx ctx, const std::string &str);
3345 inline /* implicit */ union_pw_multi_aff(union_pw_aff upa);
3346 inline explicit union_pw_multi_aff(multi_union_pw_aff mupa);
3347 inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
3348 inline ~union_pw_multi_aff();
3349 inline __isl_give isl_union_pw_multi_aff *copy() const &;
3350 inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
3351 inline __isl_keep isl_union_pw_multi_aff *get() const;
3352 inline __isl_give isl_union_pw_multi_aff *release();
3353 inline bool is_null() const;
3354 inline explicit operator bool() const;
3355 inline ctx get_ctx() const;
3356 inline std::string to_str() const;
3357 inline void dump() const;
3358
3359 inline union_pw_multi_aff add(union_pw_multi_aff upma2) const;
3360 inline union_pw_multi_aff add_pw_multi_aff(pw_multi_aff pma) const;
3361 inline union_pw_multi_aff align_params(space model) const;
3362 inline union_pw_multi_aff coalesce() const;
3363 inline unsigned int dim(isl::dim type) const;
3364 inline union_set domain() const;
3365 inline union_pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3366 static inline union_pw_multi_aff empty(space space);
3367 inline pw_multi_aff extract_pw_multi_aff(space space) const;
3368 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3369 inline union_pw_multi_aff flat_range_product(union_pw_multi_aff upma2) const;
3370 inline stat foreach_pw_multi_aff(const std::function<stat(pw_multi_aff)> &fn) const;
3371 static inline union_pw_multi_aff from_union_set(union_set uset);
3372 inline pw_multi_aff_list get_pw_multi_aff_list() const;
3373 inline space get_space() const;
3374 inline union_pw_aff get_union_pw_aff(int pos) const;
3375 inline union_pw_multi_aff gist(union_set context) const;
3376 inline union_pw_multi_aff gist_params(set context) const;
3377 inline union_pw_multi_aff intersect_domain(union_set uset) const;
3378 inline union_pw_multi_aff intersect_params(set set) const;
3379 inline boolean involves_nan() const;
3380 static inline union_pw_multi_aff multi_val_on_domain(union_set domain, multi_val mv);
3381 inline int n_pw_multi_aff() const;
3382 inline union_pw_multi_aff neg() const;
3383 inline boolean plain_is_equal(const union_pw_multi_aff &upma2) const;
3384 inline union_pw_multi_aff pullback(union_pw_multi_aff upma2) const;
3385 inline union_pw_multi_aff reset_user() const;
3386 inline union_pw_multi_aff scale_down_val(val val) const;
3387 inline union_pw_multi_aff scale_multi_val(multi_val mv) const;
3388 inline union_pw_multi_aff scale_val(val val) const;
3389 inline union_pw_multi_aff sub(union_pw_multi_aff upma2) const;
3390 inline union_pw_multi_aff subtract_domain(union_set uset) const;
3391 inline union_pw_multi_aff union_add(union_pw_multi_aff upma2) const;
3392};
3393
3394// declarations for isl::union_pw_multi_aff_list
3395inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3396inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3397
3398class union_pw_multi_aff_list {
3399 friend inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3400 friend inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3401
3402 isl_union_pw_multi_aff_list *ptr = nullptr;
3403
3404 inline explicit union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr);
3405
3406public:
3407 inline /* implicit */ union_pw_multi_aff_list();
3408 inline /* implicit */ union_pw_multi_aff_list(const union_pw_multi_aff_list &obj);
3409 inline /* implicit */ union_pw_multi_aff_list(std::nullptr_t);
3410 inline union_pw_multi_aff_list &operator=(union_pw_multi_aff_list obj);
3411 inline ~union_pw_multi_aff_list();
3412 inline __isl_give isl_union_pw_multi_aff_list *copy() const &;
3413 inline __isl_give isl_union_pw_multi_aff_list *copy() && = delete;
3414 inline __isl_keep isl_union_pw_multi_aff_list *get() const;
3415 inline __isl_give isl_union_pw_multi_aff_list *release();
3416 inline bool is_null() const;
3417 inline explicit operator bool() const;
3418 inline ctx get_ctx() const;
3419 inline void dump() const;
3420
3421 inline union_pw_multi_aff_list add(union_pw_multi_aff el) const;
3422 static inline union_pw_multi_aff_list alloc(ctx ctx, int n);
3423 inline union_pw_multi_aff_list concat(union_pw_multi_aff_list list2) const;
3424 inline union_pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3425 inline stat foreach(const std::function<stat(union_pw_multi_aff)> &fn) const;
3426 static inline union_pw_multi_aff_list from_union_pw_multi_aff(union_pw_multi_aff el);
3427 inline union_pw_multi_aff get_at(int index) const;
3428 inline union_pw_multi_aff get_union_pw_multi_aff(int index) const;
3429 inline union_pw_multi_aff_list insert(unsigned int pos, union_pw_multi_aff el) const;
3430 inline int n_union_pw_multi_aff() const;
3431 inline union_pw_multi_aff_list reverse() const;
3432 inline union_pw_multi_aff_list set_union_pw_multi_aff(int index, union_pw_multi_aff el) const;
3433 inline int size() const;
3434 inline union_pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const;
3435};
3436
3437// declarations for isl::union_pw_qpolynomial
3438inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3439inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3440
3441class union_pw_qpolynomial {
3442 friend inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3443 friend inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3444
3445 isl_union_pw_qpolynomial *ptr = nullptr;
3446
3447 inline explicit union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr);
3448
3449public:
3450 inline /* implicit */ union_pw_qpolynomial();
3451 inline /* implicit */ union_pw_qpolynomial(const union_pw_qpolynomial &obj);
3452 inline /* implicit */ union_pw_qpolynomial(std::nullptr_t);
3453 inline explicit union_pw_qpolynomial(ctx ctx, const std::string &str);
3454 inline union_pw_qpolynomial &operator=(union_pw_qpolynomial obj);
3455 inline ~union_pw_qpolynomial();
3456 inline __isl_give isl_union_pw_qpolynomial *copy() const &;
3457 inline __isl_give isl_union_pw_qpolynomial *copy() && = delete;
3458 inline __isl_keep isl_union_pw_qpolynomial *get() const;
3459 inline __isl_give isl_union_pw_qpolynomial *release();
3460 inline bool is_null() const;
3461 inline explicit operator bool() const;
3462 inline ctx get_ctx() const;
3463 inline std::string to_str() const;
3464
3465 inline union_pw_qpolynomial add(union_pw_qpolynomial upwqp2) const;
3466 inline union_pw_qpolynomial add_pw_qpolynomial(pw_qpolynomial pwqp) const;
3467 inline union_pw_qpolynomial align_params(space model) const;
3468 inline union_pw_qpolynomial coalesce() const;
3469 inline unsigned int dim(isl::dim type) const;
3470 inline union_set domain() const;
3471 inline union_pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3472 inline val eval(point pnt) const;
3473 inline pw_qpolynomial extract_pw_qpolynomial(space dim) const;
3474 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3475 inline stat foreach_pw_qpolynomial(const std::function<stat(pw_qpolynomial)> &fn) const;
3476 static inline union_pw_qpolynomial from_pw_qpolynomial(pw_qpolynomial pwqp);
3477 inline pw_qpolynomial_list get_pw_qpolynomial_list() const;
3478 inline space get_space() const;
3479 inline union_pw_qpolynomial gist(union_set context) const;
3480 inline union_pw_qpolynomial gist_params(set context) const;
3481 inline union_pw_qpolynomial intersect_domain(union_set uset) const;
3482 inline union_pw_qpolynomial intersect_params(set set) const;
3483 inline boolean involves_nan() const;
3484 inline union_pw_qpolynomial mul(union_pw_qpolynomial upwqp2) const;
3485 inline int n_pw_qpolynomial() const;
3486 inline union_pw_qpolynomial neg() const;
3487 inline boolean plain_is_equal(const union_pw_qpolynomial &upwqp2) const;
3488 inline union_pw_qpolynomial reset_user() const;
3489 inline union_pw_qpolynomial scale_down_val(val v) const;
3490 inline union_pw_qpolynomial scale_val(val v) const;
3491 inline union_pw_qpolynomial sub(union_pw_qpolynomial upwqp2) const;
3492 inline union_pw_qpolynomial subtract_domain(union_set uset) const;
3493 inline union_pw_qpolynomial to_polynomial(int sign) const;
3494 static inline union_pw_qpolynomial zero(space dim);
3495};
3496
3497// declarations for isl::union_set
3498inline union_set manage(__isl_take isl_union_set *ptr);
3499inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3500
3501class union_set {
3502 friend inline union_set manage(__isl_take isl_union_set *ptr);
3503 friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3504
3505 isl_union_set *ptr = nullptr;
3506
3507 inline explicit union_set(__isl_take isl_union_set *ptr);
3508
3509public:
3510 inline /* implicit */ union_set();
3511 inline /* implicit */ union_set(const union_set &obj);
3512 inline /* implicit */ union_set(std::nullptr_t);
3513 inline /* implicit */ union_set(basic_set bset);
3514 inline /* implicit */ union_set(set set);
3515 inline /* implicit */ union_set(point pnt);
3516 inline explicit union_set(ctx ctx, const std::string &str);
3517 inline union_set &operator=(union_set obj);
3518 inline ~union_set();
3519 inline __isl_give isl_union_set *copy() const &;
3520 inline __isl_give isl_union_set *copy() && = delete;
3521 inline __isl_keep isl_union_set *get() const;
3522 inline __isl_give isl_union_set *release();
3523 inline bool is_null() const;
3524 inline explicit operator bool() const;
3525 inline ctx get_ctx() const;
3526 inline std::string to_str() const;
3527 inline void dump() const;
3528
3529 inline union_set add_set(set set) const;
3530 inline union_set affine_hull() const;
3531 inline union_set align_params(space model) const;
3532 inline union_set apply(union_map umap) const;
3533 inline union_set coalesce() const;
3534 inline union_set coefficients() const;
3535 inline schedule compute_schedule(union_map validity, union_map proximity) const;
3536 inline boolean contains(const space &space) const;
3537 inline union_set detect_equalities() const;
3538 inline unsigned int dim(isl::dim type) const;
3539 static inline union_set empty(space space);
3540 inline set extract_set(space dim) const;
3541 inline stat foreach_point(const std::function<stat(point)> &fn) const;
3542 inline stat foreach_set(const std::function<stat(set)> &fn) const;
3543 inline basic_set_list get_basic_set_list() const;
3544 inline uint32_t get_hash() const;
3545 inline set_list get_set_list() const;
3546 inline space get_space() const;
3547 inline union_set gist(union_set context) const;
3548 inline union_set gist_params(set set) const;
3549 inline union_map identity() const;
3550 inline union_pw_multi_aff identity_union_pw_multi_aff() const;
3551 inline union_set intersect(union_set uset2) const;
3552 inline union_set intersect_params(set set) const;
3553 inline boolean is_disjoint(const union_set &uset2) const;
3554 inline boolean is_empty() const;
3555 inline boolean is_equal(const union_set &uset2) const;
3556 inline boolean is_params() const;
3557 inline boolean is_strict_subset(const union_set &uset2) const;
3558 inline boolean is_subset(const union_set &uset2) const;
3559 inline union_map lex_ge_union_set(union_set uset2) const;
3560 inline union_map lex_gt_union_set(union_set uset2) const;
3561 inline union_map lex_le_union_set(union_set uset2) const;
3562 inline union_map lex_lt_union_set(union_set uset2) const;
3563 inline union_set lexmax() const;
3564 inline union_set lexmin() const;
3565 inline multi_val min_multi_union_pw_aff(const multi_union_pw_aff &obj) const;
3566 inline int n_set() const;
3567 inline set params() const;
3568 inline union_set polyhedral_hull() const;
3569 inline union_set preimage(multi_aff ma) const;
3570 inline union_set preimage(pw_multi_aff pma) const;
3571 inline union_set preimage(union_pw_multi_aff upma) const;
3572 inline union_set product(union_set uset2) const;
3573 inline union_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
3574 inline union_set remove_divs() const;
3575 inline union_set remove_redundancies() const;
3576 inline union_set reset_user() const;
3577 inline basic_set sample() const;
3578 inline point sample_point() const;
3579 inline union_set simple_hull() const;
3580 inline union_set solutions() const;
3581 inline union_set subtract(union_set uset2) const;
3582 inline union_set unite(union_set uset2) const;
3583 inline union_set universe() const;
3584 inline union_map unwrap() const;
3585 inline union_map wrapped_domain_map() const;
3586};
3587
3588// declarations for isl::union_set_list
3589inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3590inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3591
3592class union_set_list {
3593 friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3594 friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3595
3596 isl_union_set_list *ptr = nullptr;
3597
3598 inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
3599
3600public:
3601 inline /* implicit */ union_set_list();
3602 inline /* implicit */ union_set_list(const union_set_list &obj);
3603 inline /* implicit */ union_set_list(std::nullptr_t);
3604 inline union_set_list &operator=(union_set_list obj);
3605 inline ~union_set_list();
3606 inline __isl_give isl_union_set_list *copy() const &;
3607 inline __isl_give isl_union_set_list *copy() && = delete;
3608 inline __isl_keep isl_union_set_list *get() const;
3609 inline __isl_give isl_union_set_list *release();
3610 inline bool is_null() const;
3611 inline explicit operator bool() const;
3612 inline ctx get_ctx() const;
3613 inline void dump() const;
3614
3615 inline union_set_list add(union_set el) const;
3616 static inline union_set_list alloc(ctx ctx, int n);
3617 inline union_set_list concat(union_set_list list2) const;
3618 inline union_set_list drop(unsigned int first, unsigned int n) const;
3619 inline stat foreach(const std::function<stat(union_set)> &fn) const;
3620 static inline union_set_list from_union_set(union_set el);
3621 inline union_set get_at(int index) const;
3622 inline union_set get_union_set(int index) const;
3623 inline union_set_list insert(unsigned int pos, union_set el) const;
3624 inline int n_union_set() const;
3625 inline union_set_list reverse() const;
3626 inline union_set_list set_union_set(int index, union_set el) const;
3627 inline int size() const;
3628 inline union_set_list swap(unsigned int pos1, unsigned int pos2) const;
3629 inline union_set unite() const;
3630};
3631
3632// declarations for isl::val
3633inline val manage(__isl_take isl_val *ptr);
3634inline val manage_copy(__isl_keep isl_val *ptr);
3635
3636class val {
3637 friend inline val manage(__isl_take isl_val *ptr);
3638 friend inline val manage_copy(__isl_keep isl_val *ptr);
3639
3640 isl_val *ptr = nullptr;
3641
3642 inline explicit val(__isl_take isl_val *ptr);
3643
3644public:
3645 inline /* implicit */ val();
3646 inline /* implicit */ val(const val &obj);
3647 inline /* implicit */ val(std::nullptr_t);
3648 inline explicit val(ctx ctx, const std::string &str);
3649 inline explicit val(ctx ctx, long i);
3650 inline val &operator=(val obj);
3651 inline ~val();
3652 inline __isl_give isl_val *copy() const &;
3653 inline __isl_give isl_val *copy() && = delete;
3654 inline __isl_keep isl_val *get() const;
3655 inline __isl_give isl_val *release();
3656 inline bool is_null() const;
3657 inline explicit operator bool() const;
3658 inline ctx get_ctx() const;
3659 inline std::string to_str() const;
3660 inline void dump() const;
3661
3662 inline val abs() const;
3663 inline boolean abs_eq(const val &v2) const;
3664 inline val add(val v2) const;
3665 inline val add_ui(unsigned long v2) const;
3666 inline val ceil() const;
3667 inline int cmp_si(long i) const;
3668 inline val div(val v2) const;
3669 inline val div_ui(unsigned long v2) const;
3670 inline boolean eq(const val &v2) const;
3671 inline val floor() const;
3672 inline val gcd(val v2) const;
3673 inline boolean ge(const val &v2) const;
3674 inline uint32_t get_hash() const;
3675 inline long get_num_si() const;
3676 inline boolean gt(const val &v2) const;
3677 inline boolean gt_si(long i) const;
3678 static inline val infty(ctx ctx);
3679 static inline val int_from_ui(ctx ctx, unsigned long u);
3680 inline val inv() const;
3681 inline boolean is_divisible_by(const val &v2) const;
3682 inline boolean is_infty() const;
3683 inline boolean is_int() const;
3684 inline boolean is_nan() const;
3685 inline boolean is_neg() const;
3686 inline boolean is_neginfty() const;
3687 inline boolean is_negone() const;
3688 inline boolean is_nonneg() const;
3689 inline boolean is_nonpos() const;
3690 inline boolean is_one() const;
3691 inline boolean is_pos() const;
3692 inline boolean is_rat() const;
3693 inline boolean is_zero() const;
3694 inline boolean le(const val &v2) const;
3695 inline boolean lt(const val &v2) const;
3696 inline val max(val v2) const;
3697 inline val min(val v2) const;
3698 inline val mod(val v2) const;
3699 inline val mul(val v2) const;
3700 inline val mul_ui(unsigned long v2) const;
3701 inline size_t n_abs_num_chunks(size_t size) const;
3702 static inline val nan(ctx ctx);
3703 inline boolean ne(const val &v2) const;
3704 inline val neg() const;
3705 static inline val neginfty(ctx ctx);
3706 static inline val negone(ctx ctx);
3707 static inline val one(ctx ctx);
3708 inline val pow2() const;
3709 inline val set_si(long i) const;
3710 inline int sgn() const;
3711 inline val sub(val v2) const;
3712 inline val sub_ui(unsigned long v2) const;
3713 inline val trunc() const;
3714 static inline val zero(ctx ctx);
3715};
3716
3717// declarations for isl::val_list
3718inline val_list manage(__isl_take isl_val_list *ptr);
3719inline val_list manage_copy(__isl_keep isl_val_list *ptr);
3720
3721class val_list {
3722 friend inline val_list manage(__isl_take isl_val_list *ptr);
3723 friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
3724
3725 isl_val_list *ptr = nullptr;
3726
3727 inline explicit val_list(__isl_take isl_val_list *ptr);
3728
3729public:
3730 inline /* implicit */ val_list();
3731 inline /* implicit */ val_list(const val_list &obj);
3732 inline /* implicit */ val_list(std::nullptr_t);
3733 inline val_list &operator=(val_list obj);
3734 inline ~val_list();
3735 inline __isl_give isl_val_list *copy() const &;
3736 inline __isl_give isl_val_list *copy() && = delete;
3737 inline __isl_keep isl_val_list *get() const;
3738 inline __isl_give isl_val_list *release();
3739 inline bool is_null() const;
3740 inline explicit operator bool() const;
3741 inline ctx get_ctx() const;
3742 inline void dump() const;
3743
3744 inline val_list add(val el) const;
3745 static inline val_list alloc(ctx ctx, int n);
3746 inline val_list concat(val_list list2) const;
3747 inline val_list drop(unsigned int first, unsigned int n) const;
3748 inline stat foreach(const std::function<stat(val)> &fn) const;
3749 static inline val_list from_val(val el);
3750 inline val get_at(int index) const;
3751 inline val get_val(int index) const;
3752 inline val_list insert(unsigned int pos, val el) const;
3753 inline int n_val() const;
3754 inline val_list reverse() const;
3755 inline val_list set_val(int index, val el) const;
3756 inline int size() const;
3757 inline val_list swap(unsigned int pos1, unsigned int pos2) const;
3758};
3759
3760// declarations for isl::vec
3761inline vec manage(__isl_take isl_vec *ptr);
3762inline vec manage_copy(__isl_keep isl_vec *ptr);
3763
3764class vec {
3765 friend inline vec manage(__isl_take isl_vec *ptr);
3766 friend inline vec manage_copy(__isl_keep isl_vec *ptr);
3767
3768 isl_vec *ptr = nullptr;
3769
3770 inline explicit vec(__isl_take isl_vec *ptr);
3771
3772public:
3773 inline /* implicit */ vec();
3774 inline /* implicit */ vec(const vec &obj);
3775 inline /* implicit */ vec(std::nullptr_t);
3776 inline vec &operator=(vec obj);
3777 inline ~vec();
3778 inline __isl_give isl_vec *copy() const &;
3779 inline __isl_give isl_vec *copy() && = delete;
3780 inline __isl_keep isl_vec *get() const;
3781 inline __isl_give isl_vec *release();
3782 inline bool is_null() const;
3783 inline explicit operator bool() const;
3784 inline ctx get_ctx() const;
3785 inline void dump() const;
3786
3787 inline vec add(vec vec2) const;
3788 inline vec add_els(unsigned int n) const;
3789 static inline vec alloc(ctx ctx, unsigned int size);
3790 inline vec ceil() const;
3791 inline vec clr() const;
3792 inline int cmp_element(const vec &vec2, int pos) const;
3793 inline vec concat(vec vec2) const;
3794 inline vec drop_els(unsigned int pos, unsigned int n) const;
3795 inline vec extend(unsigned int size) const;
3796 inline val get_element_val(int pos) const;
3797 inline vec insert_els(unsigned int pos, unsigned int n) const;
3798 inline vec insert_zero_els(unsigned int pos, unsigned int n) const;
3799 inline boolean is_equal(const vec &vec2) const;
3800 inline vec mat_product(mat mat) const;
3801 inline vec move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
3802 inline vec neg() const;
3803 inline vec set_element_si(int pos, int v) const;
3804 inline vec set_element_val(int pos, val v) const;
3805 inline vec set_si(int v) const;
3806 inline vec set_val(val v) const;
3807 inline int size() const;
3808 inline vec sort() const;
3809 static inline vec zero(ctx ctx, unsigned int size);
3810 inline vec zero_extend(unsigned int size) const;
3811};
3812
3813// implementations for isl::aff
3814aff manage(__isl_take isl_aff *ptr) {
3815 return aff(ptr);
3816}
3817aff manage_copy(__isl_keep isl_aff *ptr) {
3818 ptr = isl_aff_copy(ptr);
3819 return aff(ptr);
3820}
3821
3822aff::aff()
3823 : ptr(nullptr) {}
3824
3825aff::aff(const aff &obj)
3826 : ptr(nullptr)
3827{
3828 ptr = obj.copy();
3829}
3830aff::aff(std::nullptr_t)
3831 : ptr(nullptr) {}
3832
3833
3834aff::aff(__isl_take isl_aff *ptr)
3835 : ptr(ptr) {}
3836
3837aff::aff(local_space ls)
3838{
3839 auto res = isl_aff_zero_on_domain(ls.release());
3840 ptr = res;
3841}
3842aff::aff(local_space ls, val val)
3843{
3844 auto res = isl_aff_val_on_domain(ls.release(), val.release());
3845 ptr = res;
3846}
3847aff::aff(ctx ctx, const std::string &str)
3848{
3849 auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
3850 ptr = res;
3851}
3852
3853aff &aff::operator=(aff obj) {
3854 std::swap(this->ptr, obj.ptr);
3855 return *this;
3856}
3857
3858aff::~aff() {
3859 if (ptr)
3860 isl_aff_free(ptr);
3861}
3862
3863__isl_give isl_aff *aff::copy() const & {
3864 return isl_aff_copy(ptr);
3865}
3866
3867__isl_keep isl_aff *aff::get() const {
3868 return ptr;
3869}
3870
3871__isl_give isl_aff *aff::release() {
3872 isl_aff *tmp = ptr;
3873 ptr = nullptr;
3874 return tmp;
3875}
3876
3877bool aff::is_null() const {
3878 return ptr == nullptr;
3879}
3880aff::operator bool() const {
3881 return !is_null();
3882}
3883
3884
3885ctx aff::get_ctx() const {
3886 return ctx(isl_aff_get_ctx(ptr));
3887}
3888std::string aff::to_str() const {
3889 char *Tmp = isl_aff_to_str(get());
3890 if (!Tmp)
3891 return "";
3892 std::string S(Tmp);
3893 free(Tmp);
3894 return S;
3895}
3896
3897
3898void aff::dump() const {
3899 isl_aff_dump(get());
3900}
3901
3902
3903aff aff::add(aff aff2) const
3904{
3905 auto res = isl_aff_add(copy(), aff2.release());
3906 return manage(res);
3907}
3908
3909aff aff::add_coefficient_si(isl::dim type, int pos, int v) const
3910{
3911 auto res = isl_aff_add_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
3912 return manage(res);
3913}
3914
3915aff aff::add_coefficient_val(isl::dim type, int pos, val v) const
3916{
3917 auto res = isl_aff_add_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
3918 return manage(res);
3919}
3920
3921aff aff::add_constant_num_si(int v) const
3922{
3923 auto res = isl_aff_add_constant_num_si(copy(), v);
3924 return manage(res);
3925}
3926
3927aff aff::add_constant_si(int v) const
3928{
3929 auto res = isl_aff_add_constant_si(copy(), v);
3930 return manage(res);
3931}
3932
3933aff aff::add_constant_val(val v) const
3934{
3935 auto res = isl_aff_add_constant_val(copy(), v.release());
3936 return manage(res);
3937}
3938
3939aff aff::add_dims(isl::dim type, unsigned int n) const
3940{
3941 auto res = isl_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
3942 return manage(res);
3943}
3944
3945aff aff::align_params(space model) const
3946{
3947 auto res = isl_aff_align_params(copy(), model.release());
3948 return manage(res);
3949}
3950
3951aff aff::ceil() const
3952{
3953 auto res = isl_aff_ceil(copy());
3954 return manage(res);
3955}
3956
3957int aff::coefficient_sgn(isl::dim type, int pos) const
3958{
3959 auto res = isl_aff_coefficient_sgn(get(), static_cast<enum isl_dim_type>(type), pos);
3960 return res;
3961}
3962
3963int aff::dim(isl::dim type) const
3964{
3965 auto res = isl_aff_dim(get(), static_cast<enum isl_dim_type>(type));
3966 return res;
3967}
3968
3969aff aff::div(aff aff2) const
3970{
3971 auto res = isl_aff_div(copy(), aff2.release());
3972 return manage(res);
3973}
3974
3975aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
3976{
3977 auto res = isl_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
3978 return manage(res);
3979}
3980
3981basic_set aff::eq_basic_set(aff aff2) const
3982{
3983 auto res = isl_aff_eq_basic_set(copy(), aff2.release());
3984 return manage(res);
3985}
3986
3987set aff::eq_set(aff aff2) const
3988{
3989 auto res = isl_aff_eq_set(copy(), aff2.release());
3990 return manage(res);
3991}
3992
3993val aff::eval(point pnt) const
3994{
3995 auto res = isl_aff_eval(copy(), pnt.release());
3996 return manage(res);
3997}
3998
3999int aff::find_dim_by_name(isl::dim type, const std::string &name) const
4000{
4001 auto res = isl_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
4002 return res;
4003}
4004
4005aff aff::floor() const
4006{
4007 auto res = isl_aff_floor(copy());
4008 return manage(res);
4009}
4010
4011aff aff::from_range() const
4012{
4013 auto res = isl_aff_from_range(copy());
4014 return manage(res);
4015}
4016
4017basic_set aff::ge_basic_set(aff aff2) const
4018{
4019 auto res = isl_aff_ge_basic_set(copy(), aff2.release());
4020 return manage(res);
4021}
4022
4023set aff::ge_set(aff aff2) const
4024{
4025 auto res = isl_aff_ge_set(copy(), aff2.release());
4026 return manage(res);
4027}
4028
4029val aff::get_coefficient_val(isl::dim type, int pos) const
4030{
4031 auto res = isl_aff_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
4032 return manage(res);
4033}
4034
4035val aff::get_constant_val() const
4036{
4037 auto res = isl_aff_get_constant_val(get());
4038 return manage(res);
4039}
4040
4041val aff::get_denominator_val() const
4042{
4043 auto res = isl_aff_get_denominator_val(get());
4044 return manage(res);
4045}
4046
4047std::string aff::get_dim_name(isl::dim type, unsigned int pos) const
4048{
4049 auto res = isl_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
4050 std::string tmp(res);
4051 return tmp;
4052}
4053
4054aff aff::get_div(int pos) const
4055{
4056 auto res = isl_aff_get_div(get(), pos);
4057 return manage(res);
4058}
4059
4060local_space aff::get_domain_local_space() const
4061{
4062 auto res = isl_aff_get_domain_local_space(get());
4063 return manage(res);
4064}
4065
4066space aff::get_domain_space() const
4067{
4068 auto res = isl_aff_get_domain_space(get());
4069 return manage(res);
4070}
4071
4072uint32_t aff::get_hash() const
4073{
4074 auto res = isl_aff_get_hash(get());
4075 return res;
4076}
4077
4078local_space aff::get_local_space() const
4079{
4080 auto res = isl_aff_get_local_space(get());
4081 return manage(res);
4082}
4083
4084space aff::get_space() const
4085{
4086 auto res = isl_aff_get_space(get());
4087 return manage(res);
4088}
4089
4090aff aff::gist(set context) const
4091{
4092 auto res = isl_aff_gist(copy(), context.release());
4093 return manage(res);
4094}
4095
4096aff aff::gist_params(set context) const
4097{
4098 auto res = isl_aff_gist_params(copy(), context.release());
4099 return manage(res);
4100}
4101
4102basic_set aff::gt_basic_set(aff aff2) const
4103{
4104 auto res = isl_aff_gt_basic_set(copy(), aff2.release());
4105 return manage(res);
4106}
4107
4108set aff::gt_set(aff aff2) const
4109{
4110 auto res = isl_aff_gt_set(copy(), aff2.release());
4111 return manage(res);
4112}
4113
4114aff aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
4115{
4116 auto res = isl_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
4117 return manage(res);
4118}
4119
4120boolean aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
4121{
4122 auto res = isl_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
4123 return manage(res);
4124}
4125
4126boolean aff::is_cst() const
4127{
4128 auto res = isl_aff_is_cst(get());
4129 return manage(res);
4130}
4131
4132boolean aff::is_nan() const
4133{
4134 auto res = isl_aff_is_nan(get());
4135 return manage(res);
4136}
4137
4138basic_set aff::le_basic_set(aff aff2) const
4139{
4140 auto res = isl_aff_le_basic_set(copy(), aff2.release());
4141 return manage(res);
4142}
4143
4144set aff::le_set(aff aff2) const
4145{
4146 auto res = isl_aff_le_set(copy(), aff2.release());
4147 return manage(res);
4148}
4149
4150basic_set aff::lt_basic_set(aff aff2) const
4151{
4152 auto res = isl_aff_lt_basic_set(copy(), aff2.release());
4153 return manage(res);
4154}
4155
4156set aff::lt_set(aff aff2) const
4157{
4158 auto res = isl_aff_lt_set(copy(), aff2.release());
4159 return manage(res);
4160}
4161
4162aff aff::mod(val mod) const
4163{
4164 auto res = isl_aff_mod_val(copy(), mod.release());
4165 return manage(res);
4166}
4167
4168aff aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
4169{
4170 auto res = isl_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
4171 return manage(res);
4172}
4173
4174aff aff::mul(aff aff2) const
4175{
4176 auto res = isl_aff_mul(copy(), aff2.release());
4177 return manage(res);
4178}
4179
4180aff aff::nan_on_domain(local_space ls)
4181{
4182 auto res = isl_aff_nan_on_domain(ls.release());
4183 return manage(res);
4184}
4185
4186set aff::ne_set(aff aff2) const
4187{
4188 auto res = isl_aff_ne_set(copy(), aff2.release());
4189 return manage(res);
4190}
4191
4192aff aff::neg() const
4193{
4194 auto res = isl_aff_neg(copy());
4195 return manage(res);
4196}
4197
4198basic_set aff::neg_basic_set() const
4199{
4200 auto res = isl_aff_neg_basic_set(copy());
4201 return manage(res);
4202}
4203
4204aff aff::param_on_domain_space_id(space space, id id)
4205{
4206 auto res = isl_aff_param_on_domain_space_id(space.release(), id.release());
4207 return manage(res);
4208}
4209
4210boolean aff::plain_is_equal(const aff &aff2) const
4211{
4212 auto res = isl_aff_plain_is_equal(get(), aff2.get());
4213 return manage(res);
4214}
4215
4216boolean aff::plain_is_zero() const
4217{
4218 auto res = isl_aff_plain_is_zero(get());
4219 return manage(res);
4220}
4221
4222aff aff::project_domain_on_params() const
4223{
4224 auto res = isl_aff_project_domain_on_params(copy());
4225 return manage(res);
4226}
4227
4228aff aff::pullback(multi_aff ma) const
4229{
4230 auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
4231 return manage(res);
4232}
4233
4234aff aff::pullback_aff(aff aff2) const
4235{
4236 auto res = isl_aff_pullback_aff(copy(), aff2.release());
4237 return manage(res);
4238}
4239
4240aff aff::scale(val v) const
4241{
4242 auto res = isl_aff_scale_val(copy(), v.release());
4243 return manage(res);
4244}
4245
4246aff aff::scale_down(val v) const
4247{
4248 auto res = isl_aff_scale_down_val(copy(), v.release());
4249 return manage(res);
4250}
4251
4252aff aff::scale_down_ui(unsigned int f) const
4253{
4254 auto res = isl_aff_scale_down_ui(copy(), f);
4255 return manage(res);
4256}
4257
4258aff aff::set_coefficient_si(isl::dim type, int pos, int v) const
4259{
4260 auto res = isl_aff_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
4261 return manage(res);
4262}
4263
4264aff aff::set_coefficient_val(isl::dim type, int pos, val v) const
4265{
4266 auto res = isl_aff_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
4267 return manage(res);
4268}
4269
4270aff aff::set_constant_si(int v) const
4271{
4272 auto res = isl_aff_set_constant_si(copy(), v);
4273 return manage(res);
4274}
4275
4276aff aff::set_constant_val(val v) const
4277{
4278 auto res = isl_aff_set_constant_val(copy(), v.release());
4279 return manage(res);
4280}
4281
4282aff aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
4283{
4284 auto res = isl_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
4285 return manage(res);
4286}
4287
4288aff aff::set_tuple_id(isl::dim type, id id) const
4289{
4290 auto res = isl_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
4291 return manage(res);
4292}
4293
4294aff aff::sub(aff aff2) const
4295{
4296 auto res = isl_aff_sub(copy(), aff2.release());
4297 return manage(res);
4298}
4299
4300aff aff::var_on_domain(local_space ls, isl::dim type, unsigned int pos)
4301{
4302 auto res = isl_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
4303 return manage(res);
4304}
4305
4306basic_set aff::zero_basic_set() const
4307{
4308 auto res = isl_aff_zero_basic_set(copy());
4309 return manage(res);
4310}
4311
4312// implementations for isl::aff_list
4313aff_list manage(__isl_take isl_aff_list *ptr) {
4314 return aff_list(ptr);
4315}
4316aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
4317 ptr = isl_aff_list_copy(ptr);
4318 return aff_list(ptr);
4319}
4320
4321aff_list::aff_list()
4322 : ptr(nullptr) {}
4323
4324aff_list::aff_list(const aff_list &obj)
4325 : ptr(nullptr)
4326{
4327 ptr = obj.copy();
4328}
4329aff_list::aff_list(std::nullptr_t)
4330 : ptr(nullptr) {}
4331
4332
4333aff_list::aff_list(__isl_take isl_aff_list *ptr)
4334 : ptr(ptr) {}
4335
4336
4337aff_list &aff_list::operator=(aff_list obj) {
4338 std::swap(this->ptr, obj.ptr);
4339 return *this;
4340}
4341
4342aff_list::~aff_list() {
4343 if (ptr)
4344 isl_aff_list_free(ptr);
4345}
4346
4347__isl_give isl_aff_list *aff_list::copy() const & {
4348 return isl_aff_list_copy(ptr);
4349}
4350
4351__isl_keep isl_aff_list *aff_list::get() const {
4352 return ptr;
4353}
4354
4355__isl_give isl_aff_list *aff_list::release() {
4356 isl_aff_list *tmp = ptr;
4357 ptr = nullptr;
4358 return tmp;
4359}
4360
4361bool aff_list::is_null() const {
4362 return ptr == nullptr;
4363}
4364aff_list::operator bool() const {
4365 return !is_null();
4366}
4367
4368
4369ctx aff_list::get_ctx() const {
4370 return ctx(isl_aff_list_get_ctx(ptr));
4371}
4372
4373void aff_list::dump() const {
4374 isl_aff_list_dump(get());
4375}
4376
4377
4378aff_list aff_list::add(aff el) const
4379{
4380 auto res = isl_aff_list_add(copy(), el.release());
4381 return manage(res);
4382}
4383
4384aff_list aff_list::alloc(ctx ctx, int n)
4385{
4386 auto res = isl_aff_list_alloc(ctx.release(), n);
4387 return manage(res);
4388}
4389
4390aff_list aff_list::concat(aff_list list2) const
4391{
4392 auto res = isl_aff_list_concat(copy(), list2.release());
4393 return manage(res);
4394}
4395
4396aff_list aff_list::drop(unsigned int first, unsigned int n) const
4397{
4398 auto res = isl_aff_list_drop(copy(), first, n);
4399 return manage(res);
4400}
4401
4402stat aff_list::foreach(const std::function<stat(aff)> &fn) const
4403{
4404 struct fn_data {
4405 const std::function<stat(aff)> *func;
4406 } fn_data = { &fn };
4407 auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
4408 auto *data = static_cast<struct fn_data *>(arg_1);
4409 stat ret = (*data->func)(manage(arg_0));
4410 return ret.release();
4411 };
4412 auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
4413 return manage(res);
4414}
4415
4416aff_list aff_list::from_aff(aff el)
4417{
4418 auto res = isl_aff_list_from_aff(el.release());
4419 return manage(res);
4420}
4421
4422aff aff_list::get_aff(int index) const
4423{
4424 auto res = isl_aff_list_get_aff(get(), index);
4425 return manage(res);
4426}
4427
4428aff aff_list::get_at(int index) const
4429{
4430 auto res = isl_aff_list_get_at(get(), index);
4431 return manage(res);
4432}
4433
4434aff_list aff_list::insert(unsigned int pos, aff el) const
4435{
4436 auto res = isl_aff_list_insert(copy(), pos, el.release());
4437 return manage(res);
4438}
4439
4440int aff_list::n_aff() const
4441{
4442 auto res = isl_aff_list_n_aff(get());
4443 return res;
4444}
4445
4446aff_list aff_list::reverse() const
4447{
4448 auto res = isl_aff_list_reverse(copy());
4449 return manage(res);
4450}
4451
4452aff_list aff_list::set_aff(int index, aff el) const
4453{
4454 auto res = isl_aff_list_set_aff(copy(), index, el.release());
4455 return manage(res);
4456}
4457
4458int aff_list::size() const
4459{
4460 auto res = isl_aff_list_size(get());
4461 return res;
4462}
4463
4464aff_list aff_list::swap(unsigned int pos1, unsigned int pos2) const
4465{
4466 auto res = isl_aff_list_swap(copy(), pos1, pos2);
4467 return manage(res);
4468}
4469
4470// implementations for isl::ast_build
4471ast_build manage(__isl_take isl_ast_build *ptr) {
4472 return ast_build(ptr);
4473}
4474ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
4475 ptr = isl_ast_build_copy(ptr);
4476 return ast_build(ptr);
4477}
4478
4479ast_build::ast_build()
4480 : ptr(nullptr) {}
4481
4482ast_build::ast_build(const ast_build &obj)
4483 : ptr(nullptr)
4484{
4485 ptr = obj.copy();
4486}
4487ast_build::ast_build(std::nullptr_t)
4488 : ptr(nullptr) {}
4489
4490
4491ast_build::ast_build(__isl_take isl_ast_build *ptr)
4492 : ptr(ptr) {}
4493
4494ast_build::ast_build(ctx ctx)
4495{
4496 auto res = isl_ast_build_alloc(ctx.release());
4497 ptr = res;
4498}
4499
4500ast_build &ast_build::operator=(ast_build obj) {
4501 std::swap(this->ptr, obj.ptr);
4502 return *this;
4503}
4504
4505ast_build::~ast_build() {
4506 if (ptr)
4507 isl_ast_build_free(ptr);
4508}
4509
4510__isl_give isl_ast_build *ast_build::copy() const & {
4511 return isl_ast_build_copy(ptr);
4512}
4513
4514__isl_keep isl_ast_build *ast_build::get() const {
4515 return ptr;
4516}
4517
4518__isl_give isl_ast_build *ast_build::release() {
4519 isl_ast_build *tmp = ptr;
4520 ptr = nullptr;
4521 return tmp;
4522}
4523
4524bool ast_build::is_null() const {
4525 return ptr == nullptr;
4526}
4527ast_build::operator bool() const {
4528 return !is_null();
4529}
4530
4531
4532ctx ast_build::get_ctx() const {
4533 return ctx(isl_ast_build_get_ctx(ptr));
4534}
4535
4536
4537ast_expr ast_build::access_from(pw_multi_aff pma) const
4538{
4539 auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
4540 return manage(res);
4541}
4542
4543ast_expr ast_build::access_from(multi_pw_aff mpa) const
4544{
4545 auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
4546 return manage(res);
4547}
4548
4549ast_node ast_build::ast_from_schedule(union_map schedule) const
4550{
4551 auto res = isl_ast_build_ast_from_schedule(get(), schedule.release());
4552 return manage(res);
4553}
4554
4555ast_expr ast_build::call_from(pw_multi_aff pma) const
4556{
4557 auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
4558 return manage(res);
4559}
4560
4561ast_expr ast_build::call_from(multi_pw_aff mpa) const
4562{
4563 auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
4564 return manage(res);
4565}
4566
4567ast_expr ast_build::expr_from(set set) const
4568{
4569 auto res = isl_ast_build_expr_from_set(get(), set.release());
4570 return manage(res);
4571}
4572
4573ast_expr ast_build::expr_from(pw_aff pa) const
4574{
4575 auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
4576 return manage(res);
4577}
4578
4579ast_build ast_build::from_context(set set)
4580{
4581 auto res = isl_ast_build_from_context(set.release());
4582 return manage(res);
4583}
4584
4585union_map ast_build::get_schedule() const
4586{
4587 auto res = isl_ast_build_get_schedule(get());
4588 return manage(res);
4589}
4590
4591space ast_build::get_schedule_space() const
4592{
4593 auto res = isl_ast_build_get_schedule_space(get());
4594 return manage(res);
4595}
4596
4597ast_node ast_build::node_from_schedule(schedule schedule) const
4598{
4599 auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
4600 return manage(res);
4601}
4602
4603ast_node ast_build::node_from_schedule_map(union_map schedule) const
4604{
4605 auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
4606 return manage(res);
4607}
4608
4609ast_build ast_build::restrict(set set) const
4610{
4611 auto res = isl_ast_build_restrict(copy(), set.release());
4612 return manage(res);
4613}
4614
4615// implementations for isl::ast_expr
4616ast_expr manage(__isl_take isl_ast_expr *ptr) {
4617 return ast_expr(ptr);
4618}
4619ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
4620 ptr = isl_ast_expr_copy(ptr);
4621 return ast_expr(ptr);
4622}
4623
4624ast_expr::ast_expr()
4625 : ptr(nullptr) {}
4626
4627ast_expr::ast_expr(const ast_expr &obj)
4628 : ptr(nullptr)
4629{
4630 ptr = obj.copy();
4631}
4632ast_expr::ast_expr(std::nullptr_t)
4633 : ptr(nullptr) {}
4634
4635
4636ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
4637 : ptr(ptr) {}
4638
4639
4640ast_expr &ast_expr::operator=(ast_expr obj) {
4641 std::swap(this->ptr, obj.ptr);
4642 return *this;
4643}
4644
4645ast_expr::~ast_expr() {
4646 if (ptr)
4647 isl_ast_expr_free(ptr);
4648}
4649
4650__isl_give isl_ast_expr *ast_expr::copy() const & {
4651 return isl_ast_expr_copy(ptr);
4652}
4653
4654__isl_keep isl_ast_expr *ast_expr::get() const {
4655 return ptr;
4656}
4657
4658__isl_give isl_ast_expr *ast_expr::release() {
4659 isl_ast_expr *tmp = ptr;
4660 ptr = nullptr;
4661 return tmp;
4662}
4663
4664bool ast_expr::is_null() const {
4665 return ptr == nullptr;
4666}
4667ast_expr::operator bool() const {
4668 return !is_null();
4669}
4670
4671
4672ctx ast_expr::get_ctx() const {
4673 return ctx(isl_ast_expr_get_ctx(ptr));
4674}
4675std::string ast_expr::to_str() const {
4676 char *Tmp = isl_ast_expr_to_str(get());
4677 if (!Tmp)
4678 return "";
4679 std::string S(Tmp);
4680 free(Tmp);
4681 return S;
4682}
4683
4684
4685void ast_expr::dump() const {
4686 isl_ast_expr_dump(get());
4687}
4688
4689
4690ast_expr ast_expr::access(ast_expr_list indices) const
4691{
4692 auto res = isl_ast_expr_access(copy(), indices.release());
4693 return manage(res);
4694}
4695
4696ast_expr ast_expr::add(ast_expr expr2) const
4697{
4698 auto res = isl_ast_expr_add(copy(), expr2.release());
4699 return manage(res);
4700}
4701
4702ast_expr ast_expr::address_of() const
4703{
4704 auto res = isl_ast_expr_address_of(copy());
4705 return manage(res);
4706}
4707
4708ast_expr ast_expr::call(ast_expr_list arguments) const
4709{
4710 auto res = isl_ast_expr_call(copy(), arguments.release());
4711 return manage(res);
4712}
4713
4714ast_expr ast_expr::div(ast_expr expr2) const
4715{
4716 auto res = isl_ast_expr_div(copy(), expr2.release());
4717 return manage(res);
4718}
4719
4720ast_expr ast_expr::eq(ast_expr expr2) const
4721{
4722 auto res = isl_ast_expr_eq(copy(), expr2.release());
4723 return manage(res);
4724}
4725
4726ast_expr ast_expr::from_id(id id)
4727{
4728 auto res = isl_ast_expr_from_id(id.release());
4729 return manage(res);
4730}
4731
4732ast_expr ast_expr::from_val(val v)
4733{
4734 auto res = isl_ast_expr_from_val(v.release());
4735 return manage(res);
4736}
4737
4738ast_expr ast_expr::ge(ast_expr expr2) const
4739{
4740 auto res = isl_ast_expr_ge(copy(), expr2.release());
4741 return manage(res);
4742}
4743
4744id ast_expr::get_id() const
4745{
4746 auto res = isl_ast_expr_get_id(get());
4747 return manage(res);
4748}
4749
4750ast_expr ast_expr::get_op_arg(int pos) const
4751{
4752 auto res = isl_ast_expr_get_op_arg(get(), pos);
4753 return manage(res);
4754}
4755
4756int ast_expr::get_op_n_arg() const
4757{
4758 auto res = isl_ast_expr_get_op_n_arg(get());
4759 return res;
4760}
4761
4762val ast_expr::get_val() const
4763{
4764 auto res = isl_ast_expr_get_val(get());
4765 return manage(res);
4766}
4767
4768ast_expr ast_expr::gt(ast_expr expr2) const
4769{
4770 auto res = isl_ast_expr_gt(copy(), expr2.release());
4771 return manage(res);
4772}
4773
4774boolean ast_expr::is_equal(const ast_expr &expr2) const
4775{
4776 auto res = isl_ast_expr_is_equal(get(), expr2.get());
4777 return manage(res);
4778}
4779
4780ast_expr ast_expr::le(ast_expr expr2) const
4781{
4782 auto res = isl_ast_expr_le(copy(), expr2.release());
4783 return manage(res);
4784}
4785
4786ast_expr ast_expr::lt(ast_expr expr2) const
4787{
4788 auto res = isl_ast_expr_lt(copy(), expr2.release());
4789 return manage(res);
4790}
4791
4792ast_expr ast_expr::mul(ast_expr expr2) const
4793{
4794 auto res = isl_ast_expr_mul(copy(), expr2.release());
4795 return manage(res);
4796}
4797
4798ast_expr ast_expr::neg() const
4799{
4800 auto res = isl_ast_expr_neg(copy());
4801 return manage(res);
4802}
4803
4804ast_expr ast_expr::pdiv_q(ast_expr expr2) const
4805{
4806 auto res = isl_ast_expr_pdiv_q(copy(), expr2.release());
4807 return manage(res);
4808}
4809
4810ast_expr ast_expr::pdiv_r(ast_expr expr2) const
4811{
4812 auto res = isl_ast_expr_pdiv_r(copy(), expr2.release());
4813 return manage(res);
4814}
4815
4816ast_expr ast_expr::set_op_arg(int pos, ast_expr arg) const
4817{
4818 auto res = isl_ast_expr_set_op_arg(copy(), pos, arg.release());
4819 return manage(res);
4820}
4821
4822ast_expr ast_expr::sub(ast_expr expr2) const
4823{
4824 auto res = isl_ast_expr_sub(copy(), expr2.release());
4825 return manage(res);
4826}
4827
4828ast_expr ast_expr::substitute_ids(id_to_ast_expr id2expr) const
4829{
4830 auto res = isl_ast_expr_substitute_ids(copy(), id2expr.release());
4831 return manage(res);
4832}
4833
4834std::string ast_expr::to_C_str() const
4835{
4836 auto res = isl_ast_expr_to_C_str(get());
4837 std::string tmp(res);
4838 free(res);
4839 return tmp;
4840}
4841
4842// implementations for isl::ast_expr_list
4843ast_expr_list manage(__isl_take isl_ast_expr_list *ptr) {
4844 return ast_expr_list(ptr);
4845}
4846ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr) {
4847 ptr = isl_ast_expr_list_copy(ptr);
4848 return ast_expr_list(ptr);
4849}
4850
4851ast_expr_list::ast_expr_list()
4852 : ptr(nullptr) {}
4853
4854ast_expr_list::ast_expr_list(const ast_expr_list &obj)
4855 : ptr(nullptr)
4856{
4857 ptr = obj.copy();
4858}
4859ast_expr_list::ast_expr_list(std::nullptr_t)
4860 : ptr(nullptr) {}
4861
4862
4863ast_expr_list::ast_expr_list(__isl_take isl_ast_expr_list *ptr)
4864 : ptr(ptr) {}
4865
4866
4867ast_expr_list &ast_expr_list::operator=(ast_expr_list obj) {
4868 std::swap(this->ptr, obj.ptr);
4869 return *this;
4870}
4871
4872ast_expr_list::~ast_expr_list() {
4873 if (ptr)
4874 isl_ast_expr_list_free(ptr);
4875}
4876
4877__isl_give isl_ast_expr_list *ast_expr_list::copy() const & {
4878 return isl_ast_expr_list_copy(ptr);
4879}
4880
4881__isl_keep isl_ast_expr_list *ast_expr_list::get() const {
4882 return ptr;
4883}
4884
4885__isl_give isl_ast_expr_list *ast_expr_list::release() {
4886 isl_ast_expr_list *tmp = ptr;
4887 ptr = nullptr;
4888 return tmp;
4889}
4890
4891bool ast_expr_list::is_null() const {
4892 return ptr == nullptr;
4893}
4894ast_expr_list::operator bool() const {
4895 return !is_null();
4896}
4897
4898
4899ctx ast_expr_list::get_ctx() const {
4900 return ctx(isl_ast_expr_list_get_ctx(ptr));
4901}
4902
4903void ast_expr_list::dump() const {
4904 isl_ast_expr_list_dump(get());
4905}
4906
4907
4908ast_expr_list ast_expr_list::add(ast_expr el) const
4909{
4910 auto res = isl_ast_expr_list_add(copy(), el.release());
4911 return manage(res);
4912}
4913
4914ast_expr_list ast_expr_list::alloc(ctx ctx, int n)
4915{
4916 auto res = isl_ast_expr_list_alloc(ctx.release(), n);
4917 return manage(res);
4918}
4919
4920ast_expr_list ast_expr_list::concat(ast_expr_list list2) const
4921{
4922 auto res = isl_ast_expr_list_concat(copy(), list2.release());
4923 return manage(res);
4924}
4925
4926ast_expr_list ast_expr_list::drop(unsigned int first, unsigned int n) const
4927{
4928 auto res = isl_ast_expr_list_drop(copy(), first, n);
4929 return manage(res);
4930}
4931
4932stat ast_expr_list::foreach(const std::function<stat(ast_expr)> &fn) const
4933{
4934 struct fn_data {
4935 const std::function<stat(ast_expr)> *func;
4936 } fn_data = { &fn };
4937 auto fn_lambda = [](isl_ast_expr *arg_0, void *arg_1) -> isl_stat {
4938 auto *data = static_cast<struct fn_data *>(arg_1);
4939 stat ret = (*data->func)(manage(arg_0));
4940 return ret.release();
4941 };
4942 auto res = isl_ast_expr_list_foreach(get(), fn_lambda, &fn_data);
4943 return manage(res);
4944}
4945
4946ast_expr_list ast_expr_list::from_ast_expr(ast_expr el)
4947{
4948 auto res = isl_ast_expr_list_from_ast_expr(el.release());
4949 return manage(res);
4950}
4951
4952ast_expr ast_expr_list::get_ast_expr(int index) const
4953{
4954 auto res = isl_ast_expr_list_get_ast_expr(get(), index);
4955 return manage(res);
4956}
4957
4958ast_expr ast_expr_list::get_at(int index) const
4959{
4960 auto res = isl_ast_expr_list_get_at(get(), index);
4961 return manage(res);
4962}
4963
4964ast_expr_list ast_expr_list::insert(unsigned int pos, ast_expr el) const
4965{
4966 auto res = isl_ast_expr_list_insert(copy(), pos, el.release());
4967 return manage(res);
4968}
4969
4970int ast_expr_list::n_ast_expr() const
4971{
4972 auto res = isl_ast_expr_list_n_ast_expr(get());
4973 return res;
4974}
4975
4976ast_expr_list ast_expr_list::reverse() const
4977{
4978 auto res = isl_ast_expr_list_reverse(copy());
4979 return manage(res);
4980}
4981
4982ast_expr_list ast_expr_list::set_ast_expr(int index, ast_expr el) const
4983{
4984 auto res = isl_ast_expr_list_set_ast_expr(copy(), index, el.release());
4985 return manage(res);
4986}
4987
4988int ast_expr_list::size() const
4989{
4990 auto res = isl_ast_expr_list_size(get());
4991 return res;
4992}
4993
4994ast_expr_list ast_expr_list::swap(unsigned int pos1, unsigned int pos2) const
4995{
4996 auto res = isl_ast_expr_list_swap(copy(), pos1, pos2);
4997 return manage(res);
4998}
4999
5000// implementations for isl::ast_node
5001ast_node manage(__isl_take isl_ast_node *ptr) {
5002 return ast_node(ptr);
5003}
5004ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
5005 ptr = isl_ast_node_copy(ptr);
5006 return ast_node(ptr);
5007}
5008
5009ast_node::ast_node()
5010 : ptr(nullptr) {}
5011
5012ast_node::ast_node(const ast_node &obj)
5013 : ptr(nullptr)
5014{
5015 ptr = obj.copy();
5016}
5017ast_node::ast_node(std::nullptr_t)
5018 : ptr(nullptr) {}
5019
5020
5021ast_node::ast_node(__isl_take isl_ast_node *ptr)
5022 : ptr(ptr) {}
5023
5024
5025ast_node &ast_node::operator=(ast_node obj) {
5026 std::swap(this->ptr, obj.ptr);
5027 return *this;
5028}
5029
5030ast_node::~ast_node() {
5031 if (ptr)
5032 isl_ast_node_free(ptr);
5033}
5034
5035__isl_give isl_ast_node *ast_node::copy() const & {
5036 return isl_ast_node_copy(ptr);
5037}
5038
5039__isl_keep isl_ast_node *ast_node::get() const {
5040 return ptr;
5041}
5042
5043__isl_give isl_ast_node *ast_node::release() {
5044 isl_ast_node *tmp = ptr;
5045 ptr = nullptr;
5046 return tmp;
5047}
5048
5049bool ast_node::is_null() const {
5050 return ptr == nullptr;
5051}
5052ast_node::operator bool() const {
5053 return !is_null();
5054}
5055
5056
5057ctx ast_node::get_ctx() const {
5058 return ctx(isl_ast_node_get_ctx(ptr));
5059}
5060std::string ast_node::to_str() const {
5061 char *Tmp = isl_ast_node_to_str(get());
5062 if (!Tmp)
5063 return "";
5064 std::string S(Tmp);
5065 free(Tmp);
5066 return S;
5067}
5068
5069
5070void ast_node::dump() const {
5071 isl_ast_node_dump(get());
5072}
5073
5074
5075ast_node ast_node::alloc_user(ast_expr expr)
5076{
5077 auto res = isl_ast_node_alloc_user(expr.release());
5078 return manage(res);
5079}
5080
5081ast_node_list ast_node::block_get_children() const
5082{
5083 auto res = isl_ast_node_block_get_children(get());
5084 return manage(res);
5085}
5086
5087ast_node ast_node::for_get_body() const
5088{
5089 auto res = isl_ast_node_for_get_body(get());
5090 return manage(res);
5091}
5092
5093ast_expr ast_node::for_get_cond() const
5094{
5095 auto res = isl_ast_node_for_get_cond(get());
5096 return manage(res);
5097}
5098
5099ast_expr ast_node::for_get_inc() const
5100{
5101 auto res = isl_ast_node_for_get_inc(get());
5102 return manage(res);
5103}
5104
5105ast_expr ast_node::for_get_init() const
5106{
5107 auto res = isl_ast_node_for_get_init(get());
5108 return manage(res);
5109}
5110
5111ast_expr ast_node::for_get_iterator() const
5112{
5113 auto res = isl_ast_node_for_get_iterator(get());
5114 return manage(res);
5115}
5116
5117boolean ast_node::for_is_degenerate() const
5118{
5119 auto res = isl_ast_node_for_is_degenerate(get());
5120 return manage(res);
5121}
5122
5123id ast_node::get_annotation() const
5124{
5125 auto res = isl_ast_node_get_annotation(get());
5126 return manage(res);
5127}
5128
5129ast_expr ast_node::if_get_cond() const
5130{
5131 auto res = isl_ast_node_if_get_cond(get());
5132 return manage(res);
5133}
5134
5135ast_node ast_node::if_get_else() const
5136{
5137 auto res = isl_ast_node_if_get_else(get());
5138 return manage(res);
5139}
5140
5141ast_node ast_node::if_get_then() const
5142{
5143 auto res = isl_ast_node_if_get_then(get());
5144 return manage(res);
5145}
5146
5147boolean ast_node::if_has_else() const
5148{
5149 auto res = isl_ast_node_if_has_else(get());
5150 return manage(res);
5151}
5152
5153id ast_node::mark_get_id() const
5154{
5155 auto res = isl_ast_node_mark_get_id(get());
5156 return manage(res);
5157}
5158
5159ast_node ast_node::mark_get_node() const
5160{
5161 auto res = isl_ast_node_mark_get_node(get());
5162 return manage(res);
5163}
5164
5165ast_node ast_node::set_annotation(id annotation) const
5166{
5167 auto res = isl_ast_node_set_annotation(copy(), annotation.release());
5168 return manage(res);
5169}
5170
5171std::string ast_node::to_C_str() const
5172{
5173 auto res = isl_ast_node_to_C_str(get());
5174 std::string tmp(res);
5175 free(res);
5176 return tmp;
5177}
5178
5179ast_expr ast_node::user_get_expr() const
5180{
5181 auto res = isl_ast_node_user_get_expr(get());
5182 return manage(res);
5183}
5184
5185// implementations for isl::ast_node_list
5186ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
5187 return ast_node_list(ptr);
5188}
5189ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
5190 ptr = isl_ast_node_list_copy(ptr);
5191 return ast_node_list(ptr);
5192}
5193
5194ast_node_list::ast_node_list()
5195 : ptr(nullptr) {}
5196
5197ast_node_list::ast_node_list(const ast_node_list &obj)
5198 : ptr(nullptr)
5199{
5200 ptr = obj.copy();
5201}
5202ast_node_list::ast_node_list(std::nullptr_t)
5203 : ptr(nullptr) {}
5204
5205
5206ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
5207 : ptr(ptr) {}
5208
5209
5210ast_node_list &ast_node_list::operator=(ast_node_list obj) {
5211 std::swap(this->ptr, obj.ptr);
5212 return *this;
5213}
5214
5215ast_node_list::~ast_node_list() {
5216 if (ptr)
5217 isl_ast_node_list_free(ptr);
5218}
5219
5220__isl_give isl_ast_node_list *ast_node_list::copy() const & {
5221 return isl_ast_node_list_copy(ptr);
5222}
5223
5224__isl_keep isl_ast_node_list *ast_node_list::get() const {
5225 return ptr;
5226}
5227
5228__isl_give isl_ast_node_list *ast_node_list::release() {
5229 isl_ast_node_list *tmp = ptr;
5230 ptr = nullptr;
5231 return tmp;
5232}
5233
5234bool ast_node_list::is_null() const {
5235 return ptr == nullptr;
5236}
5237ast_node_list::operator bool() const {
5238 return !is_null();
5239}
5240
5241
5242ctx ast_node_list::get_ctx() const {
5243 return ctx(isl_ast_node_list_get_ctx(ptr));
5244}
5245
5246void ast_node_list::dump() const {
5247 isl_ast_node_list_dump(get());
5248}
5249
5250
5251ast_node_list ast_node_list::add(ast_node el) const
5252{
5253 auto res = isl_ast_node_list_add(copy(), el.release());
5254 return manage(res);
5255}
5256
5257ast_node_list ast_node_list::alloc(ctx ctx, int n)
5258{
5259 auto res = isl_ast_node_list_alloc(ctx.release(), n);
5260 return manage(res);
5261}
5262
5263ast_node_list ast_node_list::concat(ast_node_list list2) const
5264{
5265 auto res = isl_ast_node_list_concat(copy(), list2.release());
5266 return manage(res);
5267}
5268
5269ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
5270{
5271 auto res = isl_ast_node_list_drop(copy(), first, n);
5272 return manage(res);
5273}
5274
5275stat ast_node_list::foreach(const std::function<stat(ast_node)> &fn) const
5276{
5277 struct fn_data {
5278 const std::function<stat(ast_node)> *func;
5279 } fn_data = { &fn };
5280 auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
5281 auto *data = static_cast<struct fn_data *>(arg_1);
5282 stat ret = (*data->func)(manage(arg_0));
5283 return ret.release();
5284 };
5285 auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
5286 return manage(res);
5287}
5288
5289ast_node_list ast_node_list::from_ast_node(ast_node el)
5290{
5291 auto res = isl_ast_node_list_from_ast_node(el.release());
5292 return manage(res);
5293}
5294
5295ast_node ast_node_list::get_ast_node(int index) const
5296{
5297 auto res = isl_ast_node_list_get_ast_node(get(), index);
5298 return manage(res);
5299}
5300
5301ast_node ast_node_list::get_at(int index) const
5302{
5303 auto res = isl_ast_node_list_get_at(get(), index);
5304 return manage(res);
5305}
5306
5307ast_node_list ast_node_list::insert(unsigned int pos, ast_node el) const
5308{
5309 auto res = isl_ast_node_list_insert(copy(), pos, el.release());
5310 return manage(res);
5311}
5312
5313int ast_node_list::n_ast_node() const
5314{
5315 auto res = isl_ast_node_list_n_ast_node(get());
5316 return res;
5317}
5318
5319ast_node_list ast_node_list::reverse() const
5320{
5321 auto res = isl_ast_node_list_reverse(copy());
5322 return manage(res);
5323}
5324
5325ast_node_list ast_node_list::set_ast_node(int index, ast_node el) const
5326{
5327 auto res = isl_ast_node_list_set_ast_node(copy(), index, el.release());
5328 return manage(res);
5329}
5330
5331int ast_node_list::size() const
5332{
5333 auto res = isl_ast_node_list_size(get());
5334 return res;
5335}
5336
5337ast_node_list ast_node_list::swap(unsigned int pos1, unsigned int pos2) const
5338{
5339 auto res = isl_ast_node_list_swap(copy(), pos1, pos2);
5340 return manage(res);
5341}
5342
5343// implementations for isl::basic_map
5344basic_map manage(__isl_take isl_basic_map *ptr) {
5345 return basic_map(ptr);
5346}
5347basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
5348 ptr = isl_basic_map_copy(ptr);
5349 return basic_map(ptr);
5350}
5351
5352basic_map::basic_map()
5353 : ptr(nullptr) {}
5354
5355basic_map::basic_map(const basic_map &obj)
5356 : ptr(nullptr)
5357{
5358 ptr = obj.copy();
5359}
5360basic_map::basic_map(std::nullptr_t)
5361 : ptr(nullptr) {}
5362
5363
5364basic_map::basic_map(__isl_take isl_basic_map *ptr)
5365 : ptr(ptr) {}
5366
5367basic_map::basic_map(ctx ctx, const std::string &str)
5368{
5369 auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
5370 ptr = res;
5371}
5372
5373basic_map &basic_map::operator=(basic_map obj) {
5374 std::swap(this->ptr, obj.ptr);
5375 return *this;
5376}
5377
5378basic_map::~basic_map() {
5379 if (ptr)
5380 isl_basic_map_free(ptr);
5381}
5382
5383__isl_give isl_basic_map *basic_map::copy() const & {
5384 return isl_basic_map_copy(ptr);
5385}
5386
5387__isl_keep isl_basic_map *basic_map::get() const {
5388 return ptr;
5389}
5390
5391__isl_give isl_basic_map *basic_map::release() {
5392 isl_basic_map *tmp = ptr;
5393 ptr = nullptr;
5394 return tmp;
5395}
5396
5397bool basic_map::is_null() const {
5398 return ptr == nullptr;
5399}
5400basic_map::operator bool() const {
5401 return !is_null();
5402}
5403
5404
5405ctx basic_map::get_ctx() const {
5406 return ctx(isl_basic_map_get_ctx(ptr));
5407}
5408std::string basic_map::to_str() const {
5409 char *Tmp = isl_basic_map_to_str(get());
5410 if (!Tmp)
5411 return "";
5412 std::string S(Tmp);
5413 free(Tmp);
5414 return S;
5415}
5416
5417
5418void basic_map::dump() const {
5419 isl_basic_map_dump(get());
5420}
5421
5422
5423basic_map basic_map::add_constraint(constraint constraint) const
5424{
5425 auto res = isl_basic_map_add_constraint(copy(), constraint.release());
5426 return manage(res);
5427}
5428
5429basic_map basic_map::add_dims(isl::dim type, unsigned int n) const
5430{
5431 auto res = isl_basic_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
5432 return manage(res);
5433}
5434
5435basic_map basic_map::affine_hull() const
5436{
5437 auto res = isl_basic_map_affine_hull(copy());
5438 return manage(res);
5439}
5440
5441basic_map basic_map::align_params(space model) const
5442{
5443 auto res = isl_basic_map_align_params(copy(), model.release());
5444 return manage(res);
5445}
5446
5447basic_map basic_map::apply_domain(basic_map bmap2) const
5448{
5449 auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
5450 return manage(res);
5451}
5452
5453basic_map basic_map::apply_range(basic_map bmap2) const
5454{
5455 auto res = isl_basic_map_apply_range(copy(), bmap2.release());
5456 return manage(res);
5457}
5458
5459boolean basic_map::can_curry() const
5460{
5461 auto res = isl_basic_map_can_curry(get());
5462 return manage(res);
5463}
5464
5465boolean basic_map::can_uncurry() const
5466{
5467 auto res = isl_basic_map_can_uncurry(get());
5468 return manage(res);
5469}
5470
5471boolean basic_map::can_zip() const
5472{
5473 auto res = isl_basic_map_can_zip(get());
5474 return manage(res);
5475}
5476
5477basic_map basic_map::curry() const
5478{
5479 auto res = isl_basic_map_curry(copy());
5480 return manage(res);
5481}
5482
5483basic_set basic_map::deltas() const
5484{
5485 auto res = isl_basic_map_deltas(copy());
5486 return manage(res);
5487}
5488
5489basic_map basic_map::deltas_map() const
5490{
5491 auto res = isl_basic_map_deltas_map(copy());
5492 return manage(res);
5493}
5494
5495basic_map basic_map::detect_equalities() const
5496{
5497 auto res = isl_basic_map_detect_equalities(copy());
5498 return manage(res);
5499}
5500
5501unsigned int basic_map::dim(isl::dim type) const
5502{
5503 auto res = isl_basic_map_dim(get(), static_cast<enum isl_dim_type>(type));
5504 return res;
5505}
5506
5507basic_set basic_map::domain() const
5508{
5509 auto res = isl_basic_map_domain(copy());
5510 return manage(res);
5511}
5512
5513basic_map basic_map::domain_map() const
5514{
5515 auto res = isl_basic_map_domain_map(copy());
5516 return manage(res);
5517}
5518
5519basic_map basic_map::domain_product(basic_map bmap2) const
5520{
5521 auto res = isl_basic_map_domain_product(copy(), bmap2.release());
5522 return manage(res);
5523}
5524
5525basic_map basic_map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5526{
5527 auto res = isl_basic_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5528 return manage(res);
5529}
5530
5531basic_map basic_map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5532{
5533 auto res = isl_basic_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5534 return manage(res);
5535}
5536
5537basic_map basic_map::drop_unused_params() const
5538{
5539 auto res = isl_basic_map_drop_unused_params(copy());
5540 return manage(res);
5541}
5542
5543basic_map basic_map::eliminate(isl::dim type, unsigned int first, unsigned int n) const
5544{
5545 auto res = isl_basic_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
5546 return manage(res);
5547}
5548
5549basic_map basic_map::empty(space space)
5550{
5551 auto res = isl_basic_map_empty(space.release());
5552 return manage(res);
5553}
5554
5555basic_map basic_map::equal(space dim, unsigned int n_equal)
5556{
5557 auto res = isl_basic_map_equal(dim.release(), n_equal);
5558 return manage(res);
5559}
5560
5561mat basic_map::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const
5562{
5563 auto res = isl_basic_map_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
5564 return manage(res);
5565}
5566
5567basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5568{
5569 auto res = isl_basic_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5570 return manage(res);
5571}
5572
5573int basic_map::find_dim_by_name(isl::dim type, const std::string &name) const
5574{
5575 auto res = isl_basic_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
5576 return res;
5577}
5578
5579basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const
5580{
5581 auto res = isl_basic_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5582 return manage(res);
5583}
5584
5585basic_map basic_map::fix_val(isl::dim type, unsigned int pos, val v) const
5586{
5587 auto res = isl_basic_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
5588 return manage(res);
5589}
5590
5591basic_map basic_map::flat_product(basic_map bmap2) const
5592{
5593 auto res = isl_basic_map_flat_product(copy(), bmap2.release());
5594 return manage(res);
5595}
5596
5597basic_map basic_map::flat_range_product(basic_map bmap2) const
5598{
5599 auto res = isl_basic_map_flat_range_product(copy(), bmap2.release());
5600 return manage(res);
5601}
5602
5603basic_map basic_map::flatten() const
5604{
5605 auto res = isl_basic_map_flatten(copy());
5606 return manage(res);
5607}
5608
5609basic_map basic_map::flatten_domain() const
5610{
5611 auto res = isl_basic_map_flatten_domain(copy());
5612 return manage(res);
5613}
5614
5615basic_map basic_map::flatten_range() const
5616{
5617 auto res = isl_basic_map_flatten_range(copy());
5618 return manage(res);
5619}
5620
5621stat basic_map::foreach_constraint(const std::function<stat(constraint)> &fn) const
5622{
5623 struct fn_data {
5624 const std::function<stat(constraint)> *func;
5625 } fn_data = { &fn };
5626 auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
5627 auto *data = static_cast<struct fn_data *>(arg_1);
5628 stat ret = (*data->func)(manage(arg_0));
5629 return ret.release();
5630 };
5631 auto res = isl_basic_map_foreach_constraint(get(), fn_lambda, &fn_data);
5632 return manage(res);
5633}
5634
5635basic_map basic_map::from_aff(aff aff)
5636{
5637 auto res = isl_basic_map_from_aff(aff.release());
5638 return manage(res);
5639}
5640
5641basic_map basic_map::from_aff_list(space domain_space, aff_list list)
5642{
5643 auto res = isl_basic_map_from_aff_list(domain_space.release(), list.release());
5644 return manage(res);
5645}
5646
5647basic_map basic_map::from_constraint(constraint constraint)
5648{
5649 auto res = isl_basic_map_from_constraint(constraint.release());
5650 return manage(res);
5651}
5652
5653basic_map basic_map::from_domain(basic_set bset)
5654{
5655 auto res = isl_basic_map_from_domain(bset.release());
5656 return manage(res);
5657}
5658
5659basic_map basic_map::from_domain_and_range(basic_set domain, basic_set range)
5660{
5661 auto res = isl_basic_map_from_domain_and_range(domain.release(), range.release());
5662 return manage(res);
5663}
5664
5665basic_map basic_map::from_multi_aff(multi_aff maff)
5666{
5667 auto res = isl_basic_map_from_multi_aff(maff.release());
5668 return manage(res);
5669}
5670
5671basic_map basic_map::from_qpolynomial(qpolynomial qp)
5672{
5673 auto res = isl_basic_map_from_qpolynomial(qp.release());
5674 return manage(res);
5675}
5676
5677basic_map basic_map::from_range(basic_set bset)
5678{
5679 auto res = isl_basic_map_from_range(bset.release());
5680 return manage(res);
5681}
5682
5683constraint_list basic_map::get_constraint_list() const
5684{
5685 auto res = isl_basic_map_get_constraint_list(get());
5686 return manage(res);
5687}
5688
5689std::string basic_map::get_dim_name(isl::dim type, unsigned int pos) const
5690{
5691 auto res = isl_basic_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
5692 std::string tmp(res);
5693 return tmp;
5694}
5695
5696aff basic_map::get_div(int pos) const
5697{
5698 auto res = isl_basic_map_get_div(get(), pos);
5699 return manage(res);
5700}
5701
5702local_space basic_map::get_local_space() const
5703{
5704 auto res = isl_basic_map_get_local_space(get());
5705 return manage(res);
5706}
5707
5708space basic_map::get_space() const
5709{
5710 auto res = isl_basic_map_get_space(get());
5711 return manage(res);
5712}
5713
5714std::string basic_map::get_tuple_name(isl::dim type) const
5715{
5716 auto res = isl_basic_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
5717 std::string tmp(res);
5718 return tmp;
5719}
5720
5721basic_map basic_map::gist(basic_map context) const
5722{
5723 auto res = isl_basic_map_gist(copy(), context.release());
5724 return manage(res);
5725}
5726
5727basic_map basic_map::gist_domain(basic_set context) const
5728{
5729 auto res = isl_basic_map_gist_domain(copy(), context.release());
5730 return manage(res);
5731}
5732
5733boolean basic_map::has_dim_id(isl::dim type, unsigned int pos) const
5734{
5735 auto res = isl_basic_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
5736 return manage(res);
5737}
5738
5739basic_map basic_map::identity(space dim)
5740{
5741 auto res = isl_basic_map_identity(dim.release());
5742 return manage(res);
5743}
5744
5745boolean basic_map::image_is_bounded() const
5746{
5747 auto res = isl_basic_map_image_is_bounded(get());
5748 return manage(res);
5749}
5750
5751mat basic_map::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const
5752{
5753 auto res = isl_basic_map_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
5754 return manage(res);
5755}
5756
5757basic_map basic_map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
5758{
5759 auto res = isl_basic_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
5760 return manage(res);
5761}
5762
5763basic_map basic_map::intersect(basic_map bmap2) const
5764{
5765 auto res = isl_basic_map_intersect(copy(), bmap2.release());
5766 return manage(res);
5767}
5768
5769basic_map basic_map::intersect_domain(basic_set bset) const
5770{
5771 auto res = isl_basic_map_intersect_domain(copy(), bset.release());
5772 return manage(res);
5773}
5774
5775basic_map basic_map::intersect_range(basic_set bset) const
5776{
5777 auto res = isl_basic_map_intersect_range(copy(), bset.release());
5778 return manage(res);
5779}
5780
5781boolean basic_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
5782{
5783 auto res = isl_basic_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
5784 return manage(res);
5785}
5786
5787boolean basic_map::is_disjoint(const basic_map &bmap2) const
5788{
5789 auto res = isl_basic_map_is_disjoint(get(), bmap2.get());
5790 return manage(res);
5791}
5792
5793boolean basic_map::is_empty() const
5794{
5795 auto res = isl_basic_map_is_empty(get());
5796 return manage(res);
5797}
5798
5799boolean basic_map::is_equal(const basic_map &bmap2) const
5800{
5801 auto res = isl_basic_map_is_equal(get(), bmap2.get());
5802 return manage(res);
5803}
5804
5805boolean basic_map::is_rational() const
5806{
5807 auto res = isl_basic_map_is_rational(get());
5808 return manage(res);
5809}
5810
5811boolean basic_map::is_single_valued() const
5812{
5813 auto res = isl_basic_map_is_single_valued(get());
5814 return manage(res);
5815}
5816
5817boolean basic_map::is_strict_subset(const basic_map &bmap2) const
5818{
5819 auto res = isl_basic_map_is_strict_subset(get(), bmap2.get());
5820 return manage(res);
5821}
5822
5823boolean basic_map::is_subset(const basic_map &bmap2) const
5824{
5825 auto res = isl_basic_map_is_subset(get(), bmap2.get());
5826 return manage(res);
5827}
5828
5829boolean basic_map::is_universe() const
5830{
5831 auto res = isl_basic_map_is_universe(get());
5832 return manage(res);
5833}
5834
5835basic_map basic_map::less_at(space dim, unsigned int pos)
5836{
5837 auto res = isl_basic_map_less_at(dim.release(), pos);
5838 return manage(res);
5839}
5840
5841map basic_map::lexmax() const
5842{
5843 auto res = isl_basic_map_lexmax(copy());
5844 return manage(res);
5845}
5846
5847map basic_map::lexmin() const
5848{
5849 auto res = isl_basic_map_lexmin(copy());
5850 return manage(res);
5851}
5852
5853pw_multi_aff basic_map::lexmin_pw_multi_aff() const
5854{
5855 auto res = isl_basic_map_lexmin_pw_multi_aff(copy());
5856 return manage(res);
5857}
5858
5859basic_map basic_map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
5860{
5861 auto res = isl_basic_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5862 return manage(res);
5863}
5864
5865basic_map basic_map::more_at(space dim, unsigned int pos)
5866{
5867 auto res = isl_basic_map_more_at(dim.release(), pos);
5868 return manage(res);
5869}
5870
5871basic_map basic_map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
5872{
5873 auto res = isl_basic_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
5874 return manage(res);
5875}
5876
5877int basic_map::n_constraint() const
5878{
5879 auto res = isl_basic_map_n_constraint(get());
5880 return res;
5881}
5882
5883basic_map basic_map::nat_universe(space dim)
5884{
5885 auto res = isl_basic_map_nat_universe(dim.release());
5886 return manage(res);
5887}
5888
5889basic_map basic_map::neg() const
5890{
5891 auto res = isl_basic_map_neg(copy());
5892 return manage(res);
5893}
5894
5895basic_map basic_map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5896{
5897 auto res = isl_basic_map_order_ge(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5898 return manage(res);
5899}
5900
5901basic_map basic_map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5902{
5903 auto res = isl_basic_map_order_gt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5904 return manage(res);
5905}
5906
5907val basic_map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
5908{
5909 auto res = isl_basic_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
5910 return manage(res);
5911}
5912
5913boolean basic_map::plain_is_empty() const
5914{
5915 auto res = isl_basic_map_plain_is_empty(get());
5916 return manage(res);
5917}
5918
5919boolean basic_map::plain_is_universe() const
5920{
5921 auto res = isl_basic_map_plain_is_universe(get());
5922 return manage(res);
5923}
5924
5925basic_map basic_map::preimage_domain_multi_aff(multi_aff ma) const
5926{
5927 auto res = isl_basic_map_preimage_domain_multi_aff(copy(), ma.release());
5928 return manage(res);
5929}
5930
5931basic_map basic_map::preimage_range_multi_aff(multi_aff ma) const
5932{
5933 auto res = isl_basic_map_preimage_range_multi_aff(copy(), ma.release());
5934 return manage(res);
5935}
5936
5937basic_map basic_map::product(basic_map bmap2) const
5938{
5939 auto res = isl_basic_map_product(copy(), bmap2.release());
5940 return manage(res);
5941}
5942
5943basic_map basic_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
5944{
5945 auto res = isl_basic_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
5946 return manage(res);
5947}
5948
5949basic_set basic_map::range() const
5950{
5951 auto res = isl_basic_map_range(copy());
5952 return manage(res);
5953}
5954
5955basic_map basic_map::range_map() const
5956{
5957 auto res = isl_basic_map_range_map(copy());
5958 return manage(res);
5959}
5960
5961basic_map basic_map::range_product(basic_map bmap2) const
5962{
5963 auto res = isl_basic_map_range_product(copy(), bmap2.release());
5964 return manage(res);
5965}
5966
5967basic_map basic_map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
5968{
5969 auto res = isl_basic_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5970 return manage(res);
5971}
5972
5973basic_map basic_map::remove_divs() const
5974{
5975 auto res = isl_basic_map_remove_divs(copy());
5976 return manage(res);
5977}
5978
5979basic_map basic_map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5980{
5981 auto res = isl_basic_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5982 return manage(res);
5983}
5984
5985basic_map basic_map::remove_redundancies() const
5986{
5987 auto res = isl_basic_map_remove_redundancies(copy());
5988 return manage(res);
5989}
5990
5991basic_map basic_map::reverse() const
5992{
5993 auto res = isl_basic_map_reverse(copy());
5994 return manage(res);
5995}
5996
5997basic_map basic_map::sample() const
5998{
5999 auto res = isl_basic_map_sample(copy());
6000 return manage(res);
6001}
6002
6003basic_map basic_map::set_tuple_id(isl::dim type, id id) const
6004{
6005 auto res = isl_basic_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
6006 return manage(res);
6007}
6008
6009basic_map basic_map::set_tuple_name(isl::dim type, const std::string &s) const
6010{
6011 auto res = isl_basic_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
6012 return manage(res);
6013}
6014
6015basic_map basic_map::sum(basic_map bmap2) const
6016{
6017 auto res = isl_basic_map_sum(copy(), bmap2.release());
6018 return manage(res);
6019}
6020
6021basic_map basic_map::uncurry() const
6022{
6023 auto res = isl_basic_map_uncurry(copy());
6024 return manage(res);
6025}
6026
6027map basic_map::unite(basic_map bmap2) const
6028{
6029 auto res = isl_basic_map_union(copy(), bmap2.release());
6030 return manage(res);
6031}
6032
6033basic_map basic_map::universe(space space)
6034{
6035 auto res = isl_basic_map_universe(space.release());
6036 return manage(res);
6037}
6038
6039basic_map basic_map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
6040{
6041 auto res = isl_basic_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6042 return manage(res);
6043}
6044
6045basic_set basic_map::wrap() const
6046{
6047 auto res = isl_basic_map_wrap(copy());
6048 return manage(res);
6049}
6050
6051basic_map basic_map::zip() const
6052{
6053 auto res = isl_basic_map_zip(copy());
6054 return manage(res);
6055}
6056
6057// implementations for isl::basic_map_list
6058basic_map_list manage(__isl_take isl_basic_map_list *ptr) {
6059 return basic_map_list(ptr);
6060}
6061basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) {
6062 ptr = isl_basic_map_list_copy(ptr);
6063 return basic_map_list(ptr);
6064}
6065
6066basic_map_list::basic_map_list()
6067 : ptr(nullptr) {}
6068
6069basic_map_list::basic_map_list(const basic_map_list &obj)
6070 : ptr(nullptr)
6071{
6072 ptr = obj.copy();
6073}
6074basic_map_list::basic_map_list(std::nullptr_t)
6075 : ptr(nullptr) {}
6076
6077
6078basic_map_list::basic_map_list(__isl_take isl_basic_map_list *ptr)
6079 : ptr(ptr) {}
6080
6081
6082basic_map_list &basic_map_list::operator=(basic_map_list obj) {
6083 std::swap(this->ptr, obj.ptr);
6084 return *this;
6085}
6086
6087basic_map_list::~basic_map_list() {
6088 if (ptr)
6089 isl_basic_map_list_free(ptr);
6090}
6091
6092__isl_give isl_basic_map_list *basic_map_list::copy() const & {
6093 return isl_basic_map_list_copy(ptr);
6094}
6095
6096__isl_keep isl_basic_map_list *basic_map_list::get() const {
6097 return ptr;
6098}
6099
6100__isl_give isl_basic_map_list *basic_map_list::release() {
6101 isl_basic_map_list *tmp = ptr;
6102 ptr = nullptr;
6103 return tmp;
6104}
6105
6106bool basic_map_list::is_null() const {
6107 return ptr == nullptr;
6108}
6109basic_map_list::operator bool() const {
6110 return !is_null();
6111}
6112
6113
6114ctx basic_map_list::get_ctx() const {
6115 return ctx(isl_basic_map_list_get_ctx(ptr));
6116}
6117
6118void basic_map_list::dump() const {
6119 isl_basic_map_list_dump(get());
6120}
6121
6122
6123basic_map_list basic_map_list::add(basic_map el) const
6124{
6125 auto res = isl_basic_map_list_add(copy(), el.release());
6126 return manage(res);
6127}
6128
6129basic_map_list basic_map_list::alloc(ctx ctx, int n)
6130{
6131 auto res = isl_basic_map_list_alloc(ctx.release(), n);
6132 return manage(res);
6133}
6134
6135basic_map_list basic_map_list::concat(basic_map_list list2) const
6136{
6137 auto res = isl_basic_map_list_concat(copy(), list2.release());
6138 return manage(res);
6139}
6140
6141basic_map_list basic_map_list::drop(unsigned int first, unsigned int n) const
6142{
6143 auto res = isl_basic_map_list_drop(copy(), first, n);
6144 return manage(res);
6145}
6146
6147stat basic_map_list::foreach(const std::function<stat(basic_map)> &fn) const
6148{
6149 struct fn_data {
6150 const std::function<stat(basic_map)> *func;
6151 } fn_data = { &fn };
6152 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
6153 auto *data = static_cast<struct fn_data *>(arg_1);
6154 stat ret = (*data->func)(manage(arg_0));
6155 return ret.release();
6156 };
6157 auto res = isl_basic_map_list_foreach(get(), fn_lambda, &fn_data);
6158 return manage(res);
6159}
6160
6161basic_map_list basic_map_list::from_basic_map(basic_map el)
6162{
6163 auto res = isl_basic_map_list_from_basic_map(el.release());
6164 return manage(res);
6165}
6166
6167basic_map basic_map_list::get_at(int index) const
6168{
6169 auto res = isl_basic_map_list_get_at(get(), index);
6170 return manage(res);
6171}
6172
6173basic_map basic_map_list::get_basic_map(int index) const
6174{
6175 auto res = isl_basic_map_list_get_basic_map(get(), index);
6176 return manage(res);
6177}
6178
6179basic_map_list basic_map_list::insert(unsigned int pos, basic_map el) const
6180{
6181 auto res = isl_basic_map_list_insert(copy(), pos, el.release());
6182 return manage(res);
6183}
6184
6185int basic_map_list::n_basic_map() const
6186{
6187 auto res = isl_basic_map_list_n_basic_map(get());
6188 return res;
6189}
6190
6191basic_map_list basic_map_list::reverse() const
6192{
6193 auto res = isl_basic_map_list_reverse(copy());
6194 return manage(res);
6195}
6196
6197basic_map_list basic_map_list::set_basic_map(int index, basic_map el) const
6198{
6199 auto res = isl_basic_map_list_set_basic_map(copy(), index, el.release());
6200 return manage(res);
6201}
6202
6203int basic_map_list::size() const
6204{
6205 auto res = isl_basic_map_list_size(get());
6206 return res;
6207}
6208
6209basic_map_list basic_map_list::swap(unsigned int pos1, unsigned int pos2) const
6210{
6211 auto res = isl_basic_map_list_swap(copy(), pos1, pos2);
6212 return manage(res);
6213}
6214
6215// implementations for isl::basic_set
6216basic_set manage(__isl_take isl_basic_set *ptr) {
6217 return basic_set(ptr);
6218}
6219basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
6220 ptr = isl_basic_set_copy(ptr);
6221 return basic_set(ptr);
6222}
6223
6224basic_set::basic_set()
6225 : ptr(nullptr) {}
6226
6227basic_set::basic_set(const basic_set &obj)
6228 : ptr(nullptr)
6229{
6230 ptr = obj.copy();
6231}
6232basic_set::basic_set(std::nullptr_t)
6233 : ptr(nullptr) {}
6234
6235
6236basic_set::basic_set(__isl_take isl_basic_set *ptr)
6237 : ptr(ptr) {}
6238
6239basic_set::basic_set(ctx ctx, const std::string &str)
6240{
6241 auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
6242 ptr = res;
6243}
6244basic_set::basic_set(point pnt)
6245{
6246 auto res = isl_basic_set_from_point(pnt.release());
6247 ptr = res;
6248}
6249
6250basic_set &basic_set::operator=(basic_set obj) {
6251 std::swap(this->ptr, obj.ptr);
6252 return *this;
6253}
6254
6255basic_set::~basic_set() {
6256 if (ptr)
6257 isl_basic_set_free(ptr);
6258}
6259
6260__isl_give isl_basic_set *basic_set::copy() const & {
6261 return isl_basic_set_copy(ptr);
6262}
6263
6264__isl_keep isl_basic_set *basic_set::get() const {
6265 return ptr;
6266}
6267
6268__isl_give isl_basic_set *basic_set::release() {
6269 isl_basic_set *tmp = ptr;
6270 ptr = nullptr;
6271 return tmp;
6272}
6273
6274bool basic_set::is_null() const {
6275 return ptr == nullptr;
6276}
6277basic_set::operator bool() const {
6278 return !is_null();
6279}
6280
6281
6282ctx basic_set::get_ctx() const {
6283 return ctx(isl_basic_set_get_ctx(ptr));
6284}
6285std::string basic_set::to_str() const {
6286 char *Tmp = isl_basic_set_to_str(get());
6287 if (!Tmp)
6288 return "";
6289 std::string S(Tmp);
6290 free(Tmp);
6291 return S;
6292}
6293
6294
6295void basic_set::dump() const {
6296 isl_basic_set_dump(get());
6297}
6298
6299
6300basic_set basic_set::affine_hull() const
6301{
6302 auto res = isl_basic_set_affine_hull(copy());
6303 return manage(res);
6304}
6305
6306basic_set basic_set::align_params(space model) const
6307{
6308 auto res = isl_basic_set_align_params(copy(), model.release());
6309 return manage(res);
6310}
6311
6312basic_set basic_set::apply(basic_map bmap) const
6313{
6314 auto res = isl_basic_set_apply(copy(), bmap.release());
6315 return manage(res);
6316}
6317
6318basic_set basic_set::box_from_points(point pnt1, point pnt2)
6319{
6320 auto res = isl_basic_set_box_from_points(pnt1.release(), pnt2.release());
6321 return manage(res);
6322}
6323
6324basic_set basic_set::coefficients() const
6325{
6326 auto res = isl_basic_set_coefficients(copy());
6327 return manage(res);
6328}
6329
6330basic_set basic_set::detect_equalities() const
6331{
6332 auto res = isl_basic_set_detect_equalities(copy());
6333 return manage(res);
6334}
6335
6336unsigned int basic_set::dim(isl::dim type) const
6337{
6338 auto res = isl_basic_set_dim(get(), static_cast<enum isl_dim_type>(type));
6339 return res;
6340}
6341
6342val basic_set::dim_max_val(int pos) const
6343{
6344 auto res = isl_basic_set_dim_max_val(copy(), pos);
6345 return manage(res);
6346}
6347
6348basic_set basic_set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6349{
6350 auto res = isl_basic_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6351 return manage(res);
6352}
6353
6354basic_set basic_set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6355{
6356 auto res = isl_basic_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6357 return manage(res);
6358}
6359
6360basic_set basic_set::drop_unused_params() const
6361{
6362 auto res = isl_basic_set_drop_unused_params(copy());
6363 return manage(res);
6364}
6365
6366basic_set basic_set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
6367{
6368 auto res = isl_basic_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
6369 return manage(res);
6370}
6371
6372basic_set basic_set::empty(space space)
6373{
6374 auto res = isl_basic_set_empty(space.release());
6375 return manage(res);
6376}
6377
6378mat basic_set::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const
6379{
6380 auto res = isl_basic_set_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
6381 return manage(res);
6382}
6383
6384basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const
6385{
6386 auto res = isl_basic_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6387 return manage(res);
6388}
6389
6390basic_set basic_set::fix_val(isl::dim type, unsigned int pos, val v) const
6391{
6392 auto res = isl_basic_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
6393 return manage(res);
6394}
6395
6396basic_set basic_set::flat_product(basic_set bset2) const
6397{
6398 auto res = isl_basic_set_flat_product(copy(), bset2.release());
6399 return manage(res);
6400}
6401
6402basic_set basic_set::flatten() const
6403{
6404 auto res = isl_basic_set_flatten(copy());
6405 return manage(res);
6406}
6407
6408stat basic_set::foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<stat(constraint, constraint, basic_set)> &fn) const
6409{
6410 struct fn_data {
6411 const std::function<stat(constraint, constraint, basic_set)> *func;
6412 } fn_data = { &fn };
6413 auto fn_lambda = [](isl_constraint *arg_0, isl_constraint *arg_1, isl_basic_set *arg_2, void *arg_3) -> isl_stat {
6414 auto *data = static_cast<struct fn_data *>(arg_3);
6415 stat ret = (*data->func)(manage(arg_0), manage(arg_1), manage(arg_2));
6416 return ret.release();
6417 };
6418 auto res = isl_basic_set_foreach_bound_pair(get(), static_cast<enum isl_dim_type>(type), pos, fn_lambda, &fn_data);
6419 return manage(res);
6420}
6421
6422stat basic_set::foreach_constraint(const std::function<stat(constraint)> &fn) const
6423{
6424 struct fn_data {
6425 const std::function<stat(constraint)> *func;
6426 } fn_data = { &fn };
6427 auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
6428 auto *data = static_cast<struct fn_data *>(arg_1);
6429 stat ret = (*data->func)(manage(arg_0));
6430 return ret.release();
6431 };
6432 auto res = isl_basic_set_foreach_constraint(get(), fn_lambda, &fn_data);
6433 return manage(res);
6434}
6435
6436basic_set basic_set::from_constraint(constraint constraint)
6437{
6438 auto res = isl_basic_set_from_constraint(constraint.release());
6439 return manage(res);
6440}
6441
6442basic_set basic_set::from_multi_aff(multi_aff ma)
6443{
6444 auto res = isl_basic_set_from_multi_aff(ma.release());
6445 return manage(res);
6446}
6447
6448basic_set basic_set::from_params() const
6449{
6450 auto res = isl_basic_set_from_params(copy());
6451 return manage(res);
6452}
6453
6454constraint_list basic_set::get_constraint_list() const
6455{
6456 auto res = isl_basic_set_get_constraint_list(get());
6457 return manage(res);
6458}
6459
6460id basic_set::get_dim_id(isl::dim type, unsigned int pos) const
6461{
6462 auto res = isl_basic_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
6463 return manage(res);
6464}
6465
6466std::string basic_set::get_dim_name(isl::dim type, unsigned int pos) const
6467{
6468 auto res = isl_basic_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
6469 std::string tmp(res);
6470 return tmp;
6471}
6472
6473aff basic_set::get_div(int pos) const
6474{
6475 auto res = isl_basic_set_get_div(get(), pos);
6476 return manage(res);
6477}
6478
6479local_space basic_set::get_local_space() const
6480{
6481 auto res = isl_basic_set_get_local_space(get());
6482 return manage(res);
6483}
6484
6485space basic_set::get_space() const
6486{
6487 auto res = isl_basic_set_get_space(get());
6488 return manage(res);
6489}
6490
6491std::string basic_set::get_tuple_name() const
6492{
6493 auto res = isl_basic_set_get_tuple_name(get());
6494 std::string tmp(res);
6495 return tmp;
6496}
6497
6498basic_set basic_set::gist(basic_set context) const
6499{
6500 auto res = isl_basic_set_gist(copy(), context.release());
6501 return manage(res);
6502}
6503
6504mat basic_set::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const
6505{
6506 auto res = isl_basic_set_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
6507 return manage(res);
6508}
6509
6510basic_set basic_set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
6511{
6512 auto res = isl_basic_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
6513 return manage(res);
6514}
6515
6516basic_set basic_set::intersect(basic_set bset2) const
6517{
6518 auto res = isl_basic_set_intersect(copy(), bset2.release());
6519 return manage(res);
6520}
6521
6522basic_set basic_set::intersect_params(basic_set bset2) const
6523{
6524 auto res = isl_basic_set_intersect_params(copy(), bset2.release());
6525 return manage(res);
6526}
6527
6528boolean basic_set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
6529{
6530 auto res = isl_basic_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
6531 return manage(res);
6532}
6533
6534boolean basic_set::is_bounded() const
6535{
6536 auto res = isl_basic_set_is_bounded(get());
6537 return manage(res);
6538}
6539
6540boolean basic_set::is_disjoint(const basic_set &bset2) const
6541{
6542 auto res = isl_basic_set_is_disjoint(get(), bset2.get());
6543 return manage(res);
6544}
6545
6546boolean basic_set::is_empty() const
6547{
6548 auto res = isl_basic_set_is_empty(get());
6549 return manage(res);
6550}
6551
6552boolean basic_set::is_equal(const basic_set &bset2) const
6553{
6554 auto res = isl_basic_set_is_equal(get(), bset2.get());
6555 return manage(res);
6556}
6557
6558int basic_set::is_rational() const
6559{
6560 auto res = isl_basic_set_is_rational(get());
6561 return res;
6562}
6563
6564boolean basic_set::is_subset(const basic_set &bset2) const
6565{
6566 auto res = isl_basic_set_is_subset(get(), bset2.get());
6567 return manage(res);
6568}
6569
6570boolean basic_set::is_universe() const
6571{
6572 auto res = isl_basic_set_is_universe(get());
6573 return manage(res);
6574}
6575
6576boolean basic_set::is_wrapping() const
6577{
6578 auto res = isl_basic_set_is_wrapping(get());
6579 return manage(res);
6580}
6581
6582set basic_set::lexmax() const
6583{
6584 auto res = isl_basic_set_lexmax(copy());
6585 return manage(res);
6586}
6587
6588set basic_set::lexmin() const
6589{
6590 auto res = isl_basic_set_lexmin(copy());
6591 return manage(res);
6592}
6593
6594basic_set basic_set::lower_bound_val(isl::dim type, unsigned int pos, val value) const
6595{
6596 auto res = isl_basic_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
6597 return manage(res);
6598}
6599
6600val basic_set::max_val(const aff &obj) const
6601{
6602 auto res = isl_basic_set_max_val(get(), obj.get());
6603 return manage(res);
6604}
6605
6606basic_set basic_set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
6607{
6608 auto res = isl_basic_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
6609 return manage(res);
6610}
6611
6612int basic_set::n_constraint() const
6613{
6614 auto res = isl_basic_set_n_constraint(get());
6615 return res;
6616}
6617
6618unsigned int basic_set::n_dim() const
6619{
6620 auto res = isl_basic_set_n_dim(get());
6621 return res;
6622}
6623
6624basic_set basic_set::nat_universe(space dim)
6625{
6626 auto res = isl_basic_set_nat_universe(dim.release());
6627 return manage(res);
6628}
6629
6630basic_set basic_set::neg() const
6631{
6632 auto res = isl_basic_set_neg(copy());
6633 return manage(res);
6634}
6635
6636basic_set basic_set::params() const
6637{
6638 auto res = isl_basic_set_params(copy());
6639 return manage(res);
6640}
6641
6642boolean basic_set::plain_is_empty() const
6643{
6644 auto res = isl_basic_set_plain_is_empty(get());
6645 return manage(res);
6646}
6647
6648boolean basic_set::plain_is_equal(const basic_set &bset2) const
6649{
6650 auto res = isl_basic_set_plain_is_equal(get(), bset2.get());
6651 return manage(res);
6652}
6653
6654boolean basic_set::plain_is_universe() const
6655{
6656 auto res = isl_basic_set_plain_is_universe(get());
6657 return manage(res);
6658}
6659
6660basic_set basic_set::positive_orthant(space space)
6661{
6662 auto res = isl_basic_set_positive_orthant(space.release());
6663 return manage(res);
6664}
6665
6666basic_set basic_set::preimage_multi_aff(multi_aff ma) const
6667{
6668 auto res = isl_basic_set_preimage_multi_aff(copy(), ma.release());
6669 return manage(res);
6670}
6671
6672basic_set basic_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
6673{
6674 auto res = isl_basic_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
6675 return manage(res);
6676}
6677
6678mat basic_set::reduced_basis() const
6679{
6680 auto res = isl_basic_set_reduced_basis(get());
6681 return manage(res);
6682}
6683
6684basic_set basic_set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
6685{
6686 auto res = isl_basic_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6687 return manage(res);
6688}
6689
6690basic_set basic_set::remove_divs() const
6691{
6692 auto res = isl_basic_set_remove_divs(copy());
6693 return manage(res);
6694}
6695
6696basic_set basic_set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6697{
6698 auto res = isl_basic_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6699 return manage(res);
6700}
6701
6702basic_set basic_set::remove_redundancies() const
6703{
6704 auto res = isl_basic_set_remove_redundancies(copy());
6705 return manage(res);
6706}
6707
6708basic_set basic_set::remove_unknown_divs() const
6709{
6710 auto res = isl_basic_set_remove_unknown_divs(copy());
6711 return manage(res);
6712}
6713
6714basic_set basic_set::sample() const
6715{
6716 auto res = isl_basic_set_sample(copy());
6717 return manage(res);
6718}
6719
6720point basic_set::sample_point() const
6721{
6722 auto res = isl_basic_set_sample_point(copy());
6723 return manage(res);
6724}
6725
6726basic_set basic_set::set_tuple_id(id id) const
6727{
6728 auto res = isl_basic_set_set_tuple_id(copy(), id.release());
6729 return manage(res);
6730}
6731
6732basic_set basic_set::set_tuple_name(const std::string &s) const
6733{
6734 auto res = isl_basic_set_set_tuple_name(copy(), s.c_str());
6735 return manage(res);
6736}
6737
6738basic_set basic_set::solutions() const
6739{
6740 auto res = isl_basic_set_solutions(copy());
6741 return manage(res);
6742}
6743
6744set basic_set::unite(basic_set bset2) const
6745{
6746 auto res = isl_basic_set_union(copy(), bset2.release());
6747 return manage(res);
6748}
6749
6750basic_set basic_set::universe(space space)
6751{
6752 auto res = isl_basic_set_universe(space.release());
6753 return manage(res);
6754}
6755
6756basic_map basic_set::unwrap() const
6757{
6758 auto res = isl_basic_set_unwrap(copy());
6759 return manage(res);
6760}
6761
6762basic_set basic_set::upper_bound_val(isl::dim type, unsigned int pos, val value) const
6763{
6764 auto res = isl_basic_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
6765 return manage(res);
6766}
6767
6768// implementations for isl::basic_set_list
6769basic_set_list manage(__isl_take isl_basic_set_list *ptr) {
6770 return basic_set_list(ptr);
6771}
6772basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr) {
6773 ptr = isl_basic_set_list_copy(ptr);
6774 return basic_set_list(ptr);
6775}
6776
6777basic_set_list::basic_set_list()
6778 : ptr(nullptr) {}
6779
6780basic_set_list::basic_set_list(const basic_set_list &obj)
6781 : ptr(nullptr)
6782{
6783 ptr = obj.copy();
6784}
6785basic_set_list::basic_set_list(std::nullptr_t)
6786 : ptr(nullptr) {}
6787
6788
6789basic_set_list::basic_set_list(__isl_take isl_basic_set_list *ptr)
6790 : ptr(ptr) {}
6791
6792
6793basic_set_list &basic_set_list::operator=(basic_set_list obj) {
6794 std::swap(this->ptr, obj.ptr);
6795 return *this;
6796}
6797
6798basic_set_list::~basic_set_list() {
6799 if (ptr)
6800 isl_basic_set_list_free(ptr);
6801}
6802
6803__isl_give isl_basic_set_list *basic_set_list::copy() const & {
6804 return isl_basic_set_list_copy(ptr);
6805}
6806
6807__isl_keep isl_basic_set_list *basic_set_list::get() const {
6808 return ptr;
6809}
6810
6811__isl_give isl_basic_set_list *basic_set_list::release() {
6812 isl_basic_set_list *tmp = ptr;
6813 ptr = nullptr;
6814 return tmp;
6815}
6816
6817bool basic_set_list::is_null() const {
6818 return ptr == nullptr;
6819}
6820basic_set_list::operator bool() const {
6821 return !is_null();
6822}
6823
6824
6825ctx basic_set_list::get_ctx() const {
6826 return ctx(isl_basic_set_list_get_ctx(ptr));
6827}
6828
6829void basic_set_list::dump() const {
6830 isl_basic_set_list_dump(get());
6831}
6832
6833
6834basic_set_list basic_set_list::add(basic_set el) const
6835{
6836 auto res = isl_basic_set_list_add(copy(), el.release());
6837 return manage(res);
6838}
6839
6840basic_set_list basic_set_list::alloc(ctx ctx, int n)
6841{
6842 auto res = isl_basic_set_list_alloc(ctx.release(), n);
6843 return manage(res);
6844}
6845
6846basic_set_list basic_set_list::coefficients() const
6847{
6848 auto res = isl_basic_set_list_coefficients(copy());
6849 return manage(res);
6850}
6851
6852basic_set_list basic_set_list::concat(basic_set_list list2) const
6853{
6854 auto res = isl_basic_set_list_concat(copy(), list2.release());
6855 return manage(res);
6856}
6857
6858basic_set_list basic_set_list::drop(unsigned int first, unsigned int n) const
6859{
6860 auto res = isl_basic_set_list_drop(copy(), first, n);
6861 return manage(res);
6862}
6863
6864stat basic_set_list::foreach(const std::function<stat(basic_set)> &fn) const
6865{
6866 struct fn_data {
6867 const std::function<stat(basic_set)> *func;
6868 } fn_data = { &fn };
6869 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
6870 auto *data = static_cast<struct fn_data *>(arg_1);
6871 stat ret = (*data->func)(manage(arg_0));
6872 return ret.release();
6873 };
6874 auto res = isl_basic_set_list_foreach(get(), fn_lambda, &fn_data);
6875 return manage(res);
6876}
6877
6878basic_set_list basic_set_list::from_basic_set(basic_set el)
6879{
6880 auto res = isl_basic_set_list_from_basic_set(el.release());
6881 return manage(res);
6882}
6883
6884basic_set basic_set_list::get_at(int index) const
6885{
6886 auto res = isl_basic_set_list_get_at(get(), index);
6887 return manage(res);
6888}
6889
6890basic_set basic_set_list::get_basic_set(int index) const
6891{
6892 auto res = isl_basic_set_list_get_basic_set(get(), index);
6893 return manage(res);
6894}
6895
6896basic_set_list basic_set_list::insert(unsigned int pos, basic_set el) const
6897{
6898 auto res = isl_basic_set_list_insert(copy(), pos, el.release());
6899 return manage(res);
6900}
6901
6902int basic_set_list::n_basic_set() const
6903{
6904 auto res = isl_basic_set_list_n_basic_set(get());
6905 return res;
6906}
6907
6908basic_set_list basic_set_list::reverse() const
6909{
6910 auto res = isl_basic_set_list_reverse(copy());
6911 return manage(res);
6912}
6913
6914basic_set_list basic_set_list::set_basic_set(int index, basic_set el) const
6915{
6916 auto res = isl_basic_set_list_set_basic_set(copy(), index, el.release());
6917 return manage(res);
6918}
6919
6920int basic_set_list::size() const
6921{
6922 auto res = isl_basic_set_list_size(get());
6923 return res;
6924}
6925
6926basic_set_list basic_set_list::swap(unsigned int pos1, unsigned int pos2) const
6927{
6928 auto res = isl_basic_set_list_swap(copy(), pos1, pos2);
6929 return manage(res);
6930}
6931
6932// implementations for isl::constraint
6933constraint manage(__isl_take isl_constraint *ptr) {
6934 return constraint(ptr);
6935}
6936constraint manage_copy(__isl_keep isl_constraint *ptr) {
6937 ptr = isl_constraint_copy(ptr);
6938 return constraint(ptr);
6939}
6940
6941constraint::constraint()
6942 : ptr(nullptr) {}
6943
6944constraint::constraint(const constraint &obj)
6945 : ptr(nullptr)
6946{
6947 ptr = obj.copy();
6948}
6949constraint::constraint(std::nullptr_t)
6950 : ptr(nullptr) {}
6951
6952
6953constraint::constraint(__isl_take isl_constraint *ptr)
6954 : ptr(ptr) {}
6955
6956
6957constraint &constraint::operator=(constraint obj) {
6958 std::swap(this->ptr, obj.ptr);
6959 return *this;
6960}
6961
6962constraint::~constraint() {
6963 if (ptr)
6964 isl_constraint_free(ptr);
6965}
6966
6967__isl_give isl_constraint *constraint::copy() const & {
6968 return isl_constraint_copy(ptr);
6969}
6970
6971__isl_keep isl_constraint *constraint::get() const {
6972 return ptr;
6973}
6974
6975__isl_give isl_constraint *constraint::release() {
6976 isl_constraint *tmp = ptr;
6977 ptr = nullptr;
6978 return tmp;
6979}
6980
6981bool constraint::is_null() const {
6982 return ptr == nullptr;
6983}
6984constraint::operator bool() const {
6985 return !is_null();
6986}
6987
6988
6989ctx constraint::get_ctx() const {
6990 return ctx(isl_constraint_get_ctx(ptr));
6991}
6992
6993void constraint::dump() const {
6994 isl_constraint_dump(get());
6995}
6996
6997
6998constraint constraint::alloc_equality(local_space ls)
6999{
7000 auto res = isl_constraint_alloc_equality(ls.release());
7001 return manage(res);
7002}
7003
7004constraint constraint::alloc_inequality(local_space ls)
7005{
7006 auto res = isl_constraint_alloc_inequality(ls.release());
7007 return manage(res);
7008}
7009
7010int constraint::cmp_last_non_zero(const constraint &c2) const
7011{
7012 auto res = isl_constraint_cmp_last_non_zero(get(), c2.get());
7013 return res;
7014}
7015
7016aff constraint::get_aff() const
7017{
7018 auto res = isl_constraint_get_aff(get());
7019 return manage(res);
7020}
7021
7022aff constraint::get_bound(isl::dim type, int pos) const
7023{
7024 auto res = isl_constraint_get_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7025 return manage(res);
7026}
7027
7028val constraint::get_coefficient_val(isl::dim type, int pos) const
7029{
7030 auto res = isl_constraint_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
7031 return manage(res);
7032}
7033
7034val constraint::get_constant_val() const
7035{
7036 auto res = isl_constraint_get_constant_val(get());
7037 return manage(res);
7038}
7039
7040std::string constraint::get_dim_name(isl::dim type, unsigned int pos) const
7041{
7042 auto res = isl_constraint_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7043 std::string tmp(res);
7044 return tmp;
7045}
7046
7047aff constraint::get_div(int pos) const
7048{
7049 auto res = isl_constraint_get_div(get(), pos);
7050 return manage(res);
7051}
7052
7053local_space constraint::get_local_space() const
7054{
7055 auto res = isl_constraint_get_local_space(get());
7056 return manage(res);
7057}
7058
7059space constraint::get_space() const
7060{
7061 auto res = isl_constraint_get_space(get());
7062 return manage(res);
7063}
7064
7065boolean constraint::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
7066{
7067 auto res = isl_constraint_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
7068 return manage(res);
7069}
7070
7071int constraint::is_div_constraint() const
7072{
7073 auto res = isl_constraint_is_div_constraint(get());
7074 return res;
7075}
7076
7077boolean constraint::is_lower_bound(isl::dim type, unsigned int pos) const
7078{
7079 auto res = isl_constraint_is_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7080 return manage(res);
7081}
7082
7083boolean constraint::is_upper_bound(isl::dim type, unsigned int pos) const
7084{
7085 auto res = isl_constraint_is_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7086 return manage(res);
7087}
7088
7089int constraint::plain_cmp(const constraint &c2) const
7090{
7091 auto res = isl_constraint_plain_cmp(get(), c2.get());
7092 return res;
7093}
7094
7095constraint constraint::set_coefficient_si(isl::dim type, int pos, int v) const
7096{
7097 auto res = isl_constraint_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
7098 return manage(res);
7099}
7100
7101constraint constraint::set_coefficient_val(isl::dim type, int pos, val v) const
7102{
7103 auto res = isl_constraint_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
7104 return manage(res);
7105}
7106
7107constraint constraint::set_constant_si(int v) const
7108{
7109 auto res = isl_constraint_set_constant_si(copy(), v);
7110 return manage(res);
7111}
7112
7113constraint constraint::set_constant_val(val v) const
7114{
7115 auto res = isl_constraint_set_constant_val(copy(), v.release());
7116 return manage(res);
7117}
7118
7119// implementations for isl::constraint_list
7120constraint_list manage(__isl_take isl_constraint_list *ptr) {
7121 return constraint_list(ptr);
7122}
7123constraint_list manage_copy(__isl_keep isl_constraint_list *ptr) {
7124 ptr = isl_constraint_list_copy(ptr);
7125 return constraint_list(ptr);
7126}
7127
7128constraint_list::constraint_list()
7129 : ptr(nullptr) {}
7130
7131constraint_list::constraint_list(const constraint_list &obj)
7132 : ptr(nullptr)
7133{
7134 ptr = obj.copy();
7135}
7136constraint_list::constraint_list(std::nullptr_t)
7137 : ptr(nullptr) {}
7138
7139
7140constraint_list::constraint_list(__isl_take isl_constraint_list *ptr)
7141 : ptr(ptr) {}
7142
7143
7144constraint_list &constraint_list::operator=(constraint_list obj) {
7145 std::swap(this->ptr, obj.ptr);
7146 return *this;
7147}
7148
7149constraint_list::~constraint_list() {
7150 if (ptr)
7151 isl_constraint_list_free(ptr);
7152}
7153
7154__isl_give isl_constraint_list *constraint_list::copy() const & {
7155 return isl_constraint_list_copy(ptr);
7156}
7157
7158__isl_keep isl_constraint_list *constraint_list::get() const {
7159 return ptr;
7160}
7161
7162__isl_give isl_constraint_list *constraint_list::release() {
7163 isl_constraint_list *tmp = ptr;
7164 ptr = nullptr;
7165 return tmp;
7166}
7167
7168bool constraint_list::is_null() const {
7169 return ptr == nullptr;
7170}
7171constraint_list::operator bool() const {
7172 return !is_null();
7173}
7174
7175
7176ctx constraint_list::get_ctx() const {
7177 return ctx(isl_constraint_list_get_ctx(ptr));
7178}
7179
7180void constraint_list::dump() const {
7181 isl_constraint_list_dump(get());
7182}
7183
7184
7185constraint_list constraint_list::add(constraint el) const
7186{
7187 auto res = isl_constraint_list_add(copy(), el.release());
7188 return manage(res);
7189}
7190
7191constraint_list constraint_list::alloc(ctx ctx, int n)
7192{
7193 auto res = isl_constraint_list_alloc(ctx.release(), n);
7194 return manage(res);
7195}
7196
7197constraint_list constraint_list::concat(constraint_list list2) const
7198{
7199 auto res = isl_constraint_list_concat(copy(), list2.release());
7200 return manage(res);
7201}
7202
7203constraint_list constraint_list::drop(unsigned int first, unsigned int n) const
7204{
7205 auto res = isl_constraint_list_drop(copy(), first, n);
7206 return manage(res);
7207}
7208
7209stat constraint_list::foreach(const std::function<stat(constraint)> &fn) const
7210{
7211 struct fn_data {
7212 const std::function<stat(constraint)> *func;
7213 } fn_data = { &fn };
7214 auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
7215 auto *data = static_cast<struct fn_data *>(arg_1);
7216 stat ret = (*data->func)(manage(arg_0));
7217 return ret.release();
7218 };
7219 auto res = isl_constraint_list_foreach(get(), fn_lambda, &fn_data);
7220 return manage(res);
7221}
7222
7223constraint_list constraint_list::from_constraint(constraint el)
7224{
7225 auto res = isl_constraint_list_from_constraint(el.release());
7226 return manage(res);
7227}
7228
7229constraint constraint_list::get_at(int index) const
7230{
7231 auto res = isl_constraint_list_get_at(get(), index);
7232 return manage(res);
7233}
7234
7235constraint constraint_list::get_constraint(int index) const
7236{
7237 auto res = isl_constraint_list_get_constraint(get(), index);
7238 return manage(res);
7239}
7240
7241constraint_list constraint_list::insert(unsigned int pos, constraint el) const
7242{
7243 auto res = isl_constraint_list_insert(copy(), pos, el.release());
7244 return manage(res);
7245}
7246
7247int constraint_list::n_constraint() const
7248{
7249 auto res = isl_constraint_list_n_constraint(get());
7250 return res;
7251}
7252
7253constraint_list constraint_list::reverse() const
7254{
7255 auto res = isl_constraint_list_reverse(copy());
7256 return manage(res);
7257}
7258
7259constraint_list constraint_list::set_constraint(int index, constraint el) const
7260{
7261 auto res = isl_constraint_list_set_constraint(copy(), index, el.release());
7262 return manage(res);
7263}
7264
7265int constraint_list::size() const
7266{
7267 auto res = isl_constraint_list_size(get());
7268 return res;
7269}
7270
7271constraint_list constraint_list::swap(unsigned int pos1, unsigned int pos2) const
7272{
7273 auto res = isl_constraint_list_swap(copy(), pos1, pos2);
7274 return manage(res);
7275}
7276
7277// implementations for isl::fixed_box
7278fixed_box manage(__isl_take isl_fixed_box *ptr) {
7279 return fixed_box(ptr);
7280}
7281fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
7282 ptr = isl_fixed_box_copy(ptr);
7283 return fixed_box(ptr);
7284}
7285
7286fixed_box::fixed_box()
7287 : ptr(nullptr) {}
7288
7289fixed_box::fixed_box(const fixed_box &obj)
7290 : ptr(nullptr)
7291{
7292 ptr = obj.copy();
7293}
7294fixed_box::fixed_box(std::nullptr_t)
7295 : ptr(nullptr) {}
7296
7297
7298fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
7299 : ptr(ptr) {}
7300
7301
7302fixed_box &fixed_box::operator=(fixed_box obj) {
7303 std::swap(this->ptr, obj.ptr);
7304 return *this;
7305}
7306
7307fixed_box::~fixed_box() {
7308 if (ptr)
7309 isl_fixed_box_free(ptr);
7310}
7311
7312__isl_give isl_fixed_box *fixed_box::copy() const & {
7313 return isl_fixed_box_copy(ptr);
7314}
7315
7316__isl_keep isl_fixed_box *fixed_box::get() const {
7317 return ptr;
7318}
7319
7320__isl_give isl_fixed_box *fixed_box::release() {
7321 isl_fixed_box *tmp = ptr;
7322 ptr = nullptr;
7323 return tmp;
7324}
7325
7326bool fixed_box::is_null() const {
7327 return ptr == nullptr;
7328}
7329fixed_box::operator bool() const {
7330 return !is_null();
7331}
7332
7333
7334ctx fixed_box::get_ctx() const {
7335 return ctx(isl_fixed_box_get_ctx(ptr));
7336}
7337
7338
7339multi_aff fixed_box::get_offset() const
7340{
7341 auto res = isl_fixed_box_get_offset(get());
7342 return manage(res);
7343}
7344
7345multi_val fixed_box::get_size() const
7346{
7347 auto res = isl_fixed_box_get_size(get());
7348 return manage(res);
7349}
7350
7351space fixed_box::get_space() const
7352{
7353 auto res = isl_fixed_box_get_space(get());
7354 return manage(res);
7355}
7356
7357boolean fixed_box::is_valid() const
7358{
7359 auto res = isl_fixed_box_is_valid(get());
7360 return manage(res);
7361}
7362
7363// implementations for isl::id
7364id manage(__isl_take isl_id *ptr) {
7365 return id(ptr);
7366}
7367id manage_copy(__isl_keep isl_id *ptr) {
7368 ptr = isl_id_copy(ptr);
7369 return id(ptr);
7370}
7371
7372id::id()
7373 : ptr(nullptr) {}
7374
7375id::id(const id &obj)
7376 : ptr(nullptr)
7377{
7378 ptr = obj.copy();
7379}
7380id::id(std::nullptr_t)
7381 : ptr(nullptr) {}
7382
7383
7384id::id(__isl_take isl_id *ptr)
7385 : ptr(ptr) {}
7386
7387
7388id &id::operator=(id obj) {
7389 std::swap(this->ptr, obj.ptr);
7390 return *this;
7391}
7392
7393id::~id() {
7394 if (ptr)
7395 isl_id_free(ptr);
7396}
7397
7398__isl_give isl_id *id::copy() const & {
7399 return isl_id_copy(ptr);
7400}
7401
7402__isl_keep isl_id *id::get() const {
7403 return ptr;
7404}
7405
7406__isl_give isl_id *id::release() {
7407 isl_id *tmp = ptr;
7408 ptr = nullptr;
7409 return tmp;
7410}
7411
7412bool id::is_null() const {
7413 return ptr == nullptr;
7414}
7415id::operator bool() const {
7416 return !is_null();
7417}
7418
7419
7420ctx id::get_ctx() const {
7421 return ctx(isl_id_get_ctx(ptr));
7422}
7423std::string id::to_str() const {
7424 char *Tmp = isl_id_to_str(get());
7425 if (!Tmp)
7426 return "";
7427 std::string S(Tmp);
7428 free(Tmp);
7429 return S;
7430}
7431
7432
7433void id::dump() const {
7434 isl_id_dump(get());
7435}
7436
7437
7438id id::alloc(ctx ctx, const std::string &name, void * user)
7439{
7440 auto res = isl_id_alloc(ctx.release(), name.c_str(), user);
7441 return manage(res);
7442}
7443
7444uint32_t id::get_hash() const
7445{
7446 auto res = isl_id_get_hash(get());
7447 return res;
7448}
7449
7450std::string id::get_name() const
7451{
7452 auto res = isl_id_get_name(get());
7453 std::string tmp(res);
7454 return tmp;
7455}
7456
7457void * id::get_user() const
7458{
7459 auto res = isl_id_get_user(get());
7460 return res;
7461}
7462
7463// implementations for isl::id_list
7464id_list manage(__isl_take isl_id_list *ptr) {
7465 return id_list(ptr);
7466}
7467id_list manage_copy(__isl_keep isl_id_list *ptr) {
7468 ptr = isl_id_list_copy(ptr);
7469 return id_list(ptr);
7470}
7471
7472id_list::id_list()
7473 : ptr(nullptr) {}
7474
7475id_list::id_list(const id_list &obj)
7476 : ptr(nullptr)
7477{
7478 ptr = obj.copy();
7479}
7480id_list::id_list(std::nullptr_t)
7481 : ptr(nullptr) {}
7482
7483
7484id_list::id_list(__isl_take isl_id_list *ptr)
7485 : ptr(ptr) {}
7486
7487
7488id_list &id_list::operator=(id_list obj) {
7489 std::swap(this->ptr, obj.ptr);
7490 return *this;
7491}
7492
7493id_list::~id_list() {
7494 if (ptr)
7495 isl_id_list_free(ptr);
7496}
7497
7498__isl_give isl_id_list *id_list::copy() const & {
7499 return isl_id_list_copy(ptr);
7500}
7501
7502__isl_keep isl_id_list *id_list::get() const {
7503 return ptr;
7504}
7505
7506__isl_give isl_id_list *id_list::release() {
7507 isl_id_list *tmp = ptr;
7508 ptr = nullptr;
7509 return tmp;
7510}
7511
7512bool id_list::is_null() const {
7513 return ptr == nullptr;
7514}
7515id_list::operator bool() const {
7516 return !is_null();
7517}
7518
7519
7520ctx id_list::get_ctx() const {
7521 return ctx(isl_id_list_get_ctx(ptr));
7522}
7523
7524void id_list::dump() const {
7525 isl_id_list_dump(get());
7526}
7527
7528
7529id_list id_list::add(id el) const
7530{
7531 auto res = isl_id_list_add(copy(), el.release());
7532 return manage(res);
7533}
7534
7535id_list id_list::alloc(ctx ctx, int n)
7536{
7537 auto res = isl_id_list_alloc(ctx.release(), n);
7538 return manage(res);
7539}
7540
7541id_list id_list::concat(id_list list2) const
7542{
7543 auto res = isl_id_list_concat(copy(), list2.release());
7544 return manage(res);
7545}
7546
7547id_list id_list::drop(unsigned int first, unsigned int n) const
7548{
7549 auto res = isl_id_list_drop(copy(), first, n);
7550 return manage(res);
7551}
7552
7553stat id_list::foreach(const std::function<stat(id)> &fn) const
7554{
7555 struct fn_data {
7556 const std::function<stat(id)> *func;
7557 } fn_data = { &fn };
7558 auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
7559 auto *data = static_cast<struct fn_data *>(arg_1);
7560 stat ret = (*data->func)(manage(arg_0));
7561 return ret.release();
7562 };
7563 auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
7564 return manage(res);
7565}
7566
7567id_list id_list::from_id(id el)
7568{
7569 auto res = isl_id_list_from_id(el.release());
7570 return manage(res);
7571}
7572
7573id id_list::get_at(int index) const
7574{
7575 auto res = isl_id_list_get_at(get(), index);
7576 return manage(res);
7577}
7578
7579id id_list::get_id(int index) const
7580{
7581 auto res = isl_id_list_get_id(get(), index);
7582 return manage(res);
7583}
7584
7585id_list id_list::insert(unsigned int pos, id el) const
7586{
7587 auto res = isl_id_list_insert(copy(), pos, el.release());
7588 return manage(res);
7589}
7590
7591int id_list::n_id() const
7592{
7593 auto res = isl_id_list_n_id(get());
7594 return res;
7595}
7596
7597id_list id_list::reverse() const
7598{
7599 auto res = isl_id_list_reverse(copy());
7600 return manage(res);
7601}
7602
7603id_list id_list::set_id(int index, id el) const
7604{
7605 auto res = isl_id_list_set_id(copy(), index, el.release());
7606 return manage(res);
7607}
7608
7609int id_list::size() const
7610{
7611 auto res = isl_id_list_size(get());
7612 return res;
7613}
7614
7615id_list id_list::swap(unsigned int pos1, unsigned int pos2) const
7616{
7617 auto res = isl_id_list_swap(copy(), pos1, pos2);
7618 return manage(res);
7619}
7620
7621// implementations for isl::id_to_ast_expr
7622id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
7623 return id_to_ast_expr(ptr);
7624}
7625id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
7626 ptr = isl_id_to_ast_expr_copy(ptr);
7627 return id_to_ast_expr(ptr);
7628}
7629
7630id_to_ast_expr::id_to_ast_expr()
7631 : ptr(nullptr) {}
7632
7633id_to_ast_expr::id_to_ast_expr(const id_to_ast_expr &obj)
7634 : ptr(nullptr)
7635{
7636 ptr = obj.copy();
7637}
7638id_to_ast_expr::id_to_ast_expr(std::nullptr_t)
7639 : ptr(nullptr) {}
7640
7641
7642id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr)
7643 : ptr(ptr) {}
7644
7645
7646id_to_ast_expr &id_to_ast_expr::operator=(id_to_ast_expr obj) {
7647 std::swap(this->ptr, obj.ptr);
7648 return *this;
7649}
7650
7651id_to_ast_expr::~id_to_ast_expr() {
7652 if (ptr)
7653 isl_id_to_ast_expr_free(ptr);
7654}
7655
7656__isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
7657 return isl_id_to_ast_expr_copy(ptr);
7658}
7659
7660__isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
7661 return ptr;
7662}
7663
7664__isl_give isl_id_to_ast_expr *id_to_ast_expr::release() {
7665 isl_id_to_ast_expr *tmp = ptr;
7666 ptr = nullptr;
7667 return tmp;
7668}
7669
7670bool id_to_ast_expr::is_null() const {
7671 return ptr == nullptr;
7672}
7673id_to_ast_expr::operator bool() const {
7674 return !is_null();
7675}
7676
7677
7678ctx id_to_ast_expr::get_ctx() const {
7679 return ctx(isl_id_to_ast_expr_get_ctx(ptr));
7680}
7681
7682void id_to_ast_expr::dump() const {
7683 isl_id_to_ast_expr_dump(get());
7684}
7685
7686
7687id_to_ast_expr id_to_ast_expr::alloc(ctx ctx, int min_size)
7688{
7689 auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
7690 return manage(res);
7691}
7692
7693id_to_ast_expr id_to_ast_expr::drop(id key) const
7694{
7695 auto res = isl_id_to_ast_expr_drop(copy(), key.release());
7696 return manage(res);
7697}
7698
7699stat id_to_ast_expr::foreach(const std::function<stat(id, ast_expr)> &fn) const
7700{
7701 struct fn_data {
7702 const std::function<stat(id, ast_expr)> *func;
7703 } fn_data = { &fn };
7704 auto fn_lambda = [](isl_id *arg_0, isl_ast_expr *arg_1, void *arg_2) -> isl_stat {
7705 auto *data = static_cast<struct fn_data *>(arg_2);
7706 stat ret = (*data->func)(manage(arg_0), manage(arg_1));
7707 return ret.release();
7708 };
7709 auto res = isl_id_to_ast_expr_foreach(get(), fn_lambda, &fn_data);
7710 return manage(res);
7711}
7712
7713ast_expr id_to_ast_expr::get(id key) const
7714{
7715 auto res = isl_id_to_ast_expr_get(get(), key.release());
7716 return manage(res);
7717}
7718
7719boolean id_to_ast_expr::has(const id &key) const
7720{
7721 auto res = isl_id_to_ast_expr_has(get(), key.get());
7722 return manage(res);
7723}
7724
7725id_to_ast_expr id_to_ast_expr::set(id key, ast_expr val) const
7726{
7727 auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
7728 return manage(res);
7729}
7730
7731// implementations for isl::local_space
7732local_space manage(__isl_take isl_local_space *ptr) {
7733 return local_space(ptr);
7734}
7735local_space manage_copy(__isl_keep isl_local_space *ptr) {
7736 ptr = isl_local_space_copy(ptr);
7737 return local_space(ptr);
7738}
7739
7740local_space::local_space()
7741 : ptr(nullptr) {}
7742
7743local_space::local_space(const local_space &obj)
7744 : ptr(nullptr)
7745{
7746 ptr = obj.copy();
7747}
7748local_space::local_space(std::nullptr_t)
7749 : ptr(nullptr) {}
7750
7751
7752local_space::local_space(__isl_take isl_local_space *ptr)
7753 : ptr(ptr) {}
7754
7755local_space::local_space(space dim)
7756{
7757 auto res = isl_local_space_from_space(dim.release());
7758 ptr = res;
7759}
7760
7761local_space &local_space::operator=(local_space obj) {
7762 std::swap(this->ptr, obj.ptr);
7763 return *this;
7764}
7765
7766local_space::~local_space() {
7767 if (ptr)
7768 isl_local_space_free(ptr);
7769}
7770
7771__isl_give isl_local_space *local_space::copy() const & {
7772 return isl_local_space_copy(ptr);
7773}
7774
7775__isl_keep isl_local_space *local_space::get() const {
7776 return ptr;
7777}
7778
7779__isl_give isl_local_space *local_space::release() {
7780 isl_local_space *tmp = ptr;
7781 ptr = nullptr;
7782 return tmp;
7783}
7784
7785bool local_space::is_null() const {
7786 return ptr == nullptr;
7787}
7788local_space::operator bool() const {
7789 return !is_null();
7790}
7791
7792
7793ctx local_space::get_ctx() const {
7794 return ctx(isl_local_space_get_ctx(ptr));
7795}
7796
7797void local_space::dump() const {
7798 isl_local_space_dump(get());
7799}
7800
7801
7802local_space local_space::add_dims(isl::dim type, unsigned int n) const
7803{
7804 auto res = isl_local_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
7805 return manage(res);
7806}
7807
7808int local_space::dim(isl::dim type) const
7809{
7810 auto res = isl_local_space_dim(get(), static_cast<enum isl_dim_type>(type));
7811 return res;
7812}
7813
7814local_space local_space::domain() const
7815{
7816 auto res = isl_local_space_domain(copy());
7817 return manage(res);
7818}
7819
7820local_space local_space::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
7821{
7822 auto res = isl_local_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
7823 return manage(res);
7824}
7825
7826int local_space::find_dim_by_name(isl::dim type, const std::string &name) const
7827{
7828 auto res = isl_local_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
7829 return res;
7830}
7831
7832local_space local_space::flatten_domain() const
7833{
7834 auto res = isl_local_space_flatten_domain(copy());
7835 return manage(res);
7836}
7837
7838local_space local_space::flatten_range() const
7839{
7840 auto res = isl_local_space_flatten_range(copy());
7841 return manage(res);
7842}
7843
7844local_space local_space::from_domain() const
7845{
7846 auto res = isl_local_space_from_domain(copy());
7847 return manage(res);
7848}
7849
7850id local_space::get_dim_id(isl::dim type, unsigned int pos) const
7851{
7852 auto res = isl_local_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
7853 return manage(res);
7854}
7855
7856std::string local_space::get_dim_name(isl::dim type, unsigned int pos) const
7857{
7858 auto res = isl_local_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7859 std::string tmp(res);
7860 return tmp;
7861}
7862
7863aff local_space::get_div(int pos) const
7864{
7865 auto res = isl_local_space_get_div(get(), pos);
7866 return manage(res);
7867}
7868
7869space local_space::get_space() const
7870{
7871 auto res = isl_local_space_get_space(get());
7872 return manage(res);
7873}
7874
7875boolean local_space::has_dim_id(isl::dim type, unsigned int pos) const
7876{
7877 auto res = isl_local_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
7878 return manage(res);
7879}
7880
7881boolean local_space::has_dim_name(isl::dim type, unsigned int pos) const
7882{
7883 auto res = isl_local_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7884 return manage(res);
7885}
7886
7887local_space local_space::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
7888{
7889 auto res = isl_local_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
7890 return manage(res);
7891}
7892
7893local_space local_space::intersect(local_space ls2) const
7894{
7895 auto res = isl_local_space_intersect(copy(), ls2.release());
7896 return manage(res);
7897}
7898
7899boolean local_space::is_equal(const local_space &ls2) const
7900{
7901 auto res = isl_local_space_is_equal(get(), ls2.get());
7902 return manage(res);
7903}
7904
7905boolean local_space::is_params() const
7906{
7907 auto res = isl_local_space_is_params(get());
7908 return manage(res);
7909}
7910
7911boolean local_space::is_set() const
7912{
7913 auto res = isl_local_space_is_set(get());
7914 return manage(res);
7915}
7916
7917local_space local_space::range() const
7918{
7919 auto res = isl_local_space_range(copy());
7920 return manage(res);
7921}
7922
7923local_space local_space::set_dim_id(isl::dim type, unsigned int pos, id id) const
7924{
7925 auto res = isl_local_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
7926 return manage(res);
7927}
7928
7929local_space local_space::set_from_params() const
7930{
7931 auto res = isl_local_space_set_from_params(copy());
7932 return manage(res);
7933}
7934
7935local_space local_space::set_tuple_id(isl::dim type, id id) const
7936{
7937 auto res = isl_local_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
7938 return manage(res);
7939}
7940
7941local_space local_space::wrap() const
7942{
7943 auto res = isl_local_space_wrap(copy());
7944 return manage(res);
7945}
7946
7947// implementations for isl::map
7948map manage(__isl_take isl_map *ptr) {
7949 return map(ptr);
7950}
7951map manage_copy(__isl_keep isl_map *ptr) {
7952 ptr = isl_map_copy(ptr);
7953 return map(ptr);
7954}
7955
7956map::map()
7957 : ptr(nullptr) {}
7958
7959map::map(const map &obj)
7960 : ptr(nullptr)
7961{
7962 ptr = obj.copy();
7963}
7964map::map(std::nullptr_t)
7965 : ptr(nullptr) {}
7966
7967
7968map::map(__isl_take isl_map *ptr)
7969 : ptr(ptr) {}
7970
7971map::map(ctx ctx, const std::string &str)
7972{
7973 auto res = isl_map_read_from_str(ctx.release(), str.c_str());
7974 ptr = res;
7975}
7976map::map(basic_map bmap)
7977{
7978 auto res = isl_map_from_basic_map(bmap.release());
7979 ptr = res;
7980}
7981
7982map &map::operator=(map obj) {
7983 std::swap(this->ptr, obj.ptr);
7984 return *this;
7985}
7986
7987map::~map() {
7988 if (ptr)
7989 isl_map_free(ptr);
7990}
7991
7992__isl_give isl_map *map::copy() const & {
7993 return isl_map_copy(ptr);
7994}
7995
7996__isl_keep isl_map *map::get() const {
7997 return ptr;
7998}
7999
8000__isl_give isl_map *map::release() {
8001 isl_map *tmp = ptr;
8002 ptr = nullptr;
8003 return tmp;
8004}
8005
8006bool map::is_null() const {
8007 return ptr == nullptr;
8008}
8009map::operator bool() const {
8010 return !is_null();
8011}
8012
8013
8014ctx map::get_ctx() const {
8015 return ctx(isl_map_get_ctx(ptr));
8016}
8017std::string map::to_str() const {
8018 char *Tmp = isl_map_to_str(get());
8019 if (!Tmp)
8020 return "";
8021 std::string S(Tmp);
8022 free(Tmp);
8023 return S;
8024}
8025
8026
8027void map::dump() const {
8028 isl_map_dump(get());
8029}
8030
8031
8032map map::add_constraint(constraint constraint) const
8033{
8034 auto res = isl_map_add_constraint(copy(), constraint.release());
8035 return manage(res);
8036}
8037
8038map map::add_dims(isl::dim type, unsigned int n) const
8039{
8040 auto res = isl_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
8041 return manage(res);
8042}
8043
8044basic_map map::affine_hull() const
8045{
8046 auto res = isl_map_affine_hull(copy());
8047 return manage(res);
8048}
8049
8050map map::align_params(space model) const
8051{
8052 auto res = isl_map_align_params(copy(), model.release());
8053 return manage(res);
8054}
8055
8056map map::apply_domain(map map2) const
8057{
8058 auto res = isl_map_apply_domain(copy(), map2.release());
8059 return manage(res);
8060}
8061
8062map map::apply_range(map map2) const
8063{
8064 auto res = isl_map_apply_range(copy(), map2.release());
8065 return manage(res);
8066}
8067
8068boolean map::can_curry() const
8069{
8070 auto res = isl_map_can_curry(get());
8071 return manage(res);
8072}
8073
8074boolean map::can_range_curry() const
8075{
8076 auto res = isl_map_can_range_curry(get());
8077 return manage(res);
8078}
8079
8080boolean map::can_uncurry() const
8081{
8082 auto res = isl_map_can_uncurry(get());
8083 return manage(res);
8084}
8085
8086boolean map::can_zip() const
8087{
8088 auto res = isl_map_can_zip(get());
8089 return manage(res);
8090}
8091
8092map map::coalesce() const
8093{
8094 auto res = isl_map_coalesce(copy());
8095 return manage(res);
8096}
8097
8098map map::complement() const
8099{
8100 auto res = isl_map_complement(copy());
8101 return manage(res);
8102}
8103
8104basic_map map::convex_hull() const
8105{
8106 auto res = isl_map_convex_hull(copy());
8107 return manage(res);
8108}
8109
8110map map::curry() const
8111{
8112 auto res = isl_map_curry(copy());
8113 return manage(res);
8114}
8115
8116set map::deltas() const
8117{
8118 auto res = isl_map_deltas(copy());
8119 return manage(res);
8120}
8121
8122map map::deltas_map() const
8123{
8124 auto res = isl_map_deltas_map(copy());
8125 return manage(res);
8126}
8127
8128map map::detect_equalities() const
8129{
8130 auto res = isl_map_detect_equalities(copy());
8131 return manage(res);
8132}
8133
8134unsigned int map::dim(isl::dim type) const
8135{
8136 auto res = isl_map_dim(get(), static_cast<enum isl_dim_type>(type));
8137 return res;
8138}
8139
8140pw_aff map::dim_max(int pos) const
8141{
8142 auto res = isl_map_dim_max(copy(), pos);
8143 return manage(res);
8144}
8145
8146pw_aff map::dim_min(int pos) const
8147{
8148 auto res = isl_map_dim_min(copy(), pos);
8149 return manage(res);
8150}
8151
8152set map::domain() const
8153{
8154 auto res = isl_map_domain(copy());
8155 return manage(res);
8156}
8157
8158map map::domain_factor_domain() const
8159{
8160 auto res = isl_map_domain_factor_domain(copy());
8161 return manage(res);
8162}
8163
8164map map::domain_factor_range() const
8165{
8166 auto res = isl_map_domain_factor_range(copy());
8167 return manage(res);
8168}
8169
8170boolean map::domain_is_wrapping() const
8171{
8172 auto res = isl_map_domain_is_wrapping(get());
8173 return manage(res);
8174}
8175
8176map map::domain_map() const
8177{
8178 auto res = isl_map_domain_map(copy());
8179 return manage(res);
8180}
8181
8182map map::domain_product(map map2) const
8183{
8184 auto res = isl_map_domain_product(copy(), map2.release());
8185 return manage(res);
8186}
8187
8188map map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8189{
8190 auto res = isl_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8191 return manage(res);
8192}
8193
8194map map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8195{
8196 auto res = isl_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8197 return manage(res);
8198}
8199
8200map map::drop_unused_params() const
8201{
8202 auto res = isl_map_drop_unused_params(copy());
8203 return manage(res);
8204}
8205
8206map map::eliminate(isl::dim type, unsigned int first, unsigned int n) const
8207{
8208 auto res = isl_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
8209 return manage(res);
8210}
8211
8212map map::empty(space space)
8213{
8214 auto res = isl_map_empty(space.release());
8215 return manage(res);
8216}
8217
8218map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8219{
8220 auto res = isl_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8221 return manage(res);
8222}
8223
8224map map::factor_domain() const
8225{
8226 auto res = isl_map_factor_domain(copy());
8227 return manage(res);
8228}
8229
8230map map::factor_range() const
8231{
8232 auto res = isl_map_factor_range(copy());
8233 return manage(res);
8234}
8235
8236int map::find_dim_by_id(isl::dim type, const id &id) const
8237{
8238 auto res = isl_map_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
8239 return res;
8240}
8241
8242int map::find_dim_by_name(isl::dim type, const std::string &name) const
8243{
8244 auto res = isl_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
8245 return res;
8246}
8247
8248map map::fix_si(isl::dim type, unsigned int pos, int value) const
8249{
8250 auto res = isl_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8251 return manage(res);
8252}
8253
8254map map::fix_val(isl::dim type, unsigned int pos, val v) const
8255{
8256 auto res = isl_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
8257 return manage(res);
8258}
8259
8260map map::fixed_power_val(val exp) const
8261{
8262 auto res = isl_map_fixed_power_val(copy(), exp.release());
8263 return manage(res);
8264}
8265
8266map map::flat_domain_product(map map2) const
8267{
8268 auto res = isl_map_flat_domain_product(copy(), map2.release());
8269 return manage(res);
8270}
8271
8272map map::flat_product(map map2) const
8273{
8274 auto res = isl_map_flat_product(copy(), map2.release());
8275 return manage(res);
8276}
8277
8278map map::flat_range_product(map map2) const
8279{
8280 auto res = isl_map_flat_range_product(copy(), map2.release());
8281 return manage(res);
8282}
8283
8284map map::flatten() const
8285{
8286 auto res = isl_map_flatten(copy());
8287 return manage(res);
8288}
8289
8290map map::flatten_domain() const
8291{
8292 auto res = isl_map_flatten_domain(copy());
8293 return manage(res);
8294}
8295
8296map map::flatten_range() const
8297{
8298 auto res = isl_map_flatten_range(copy());
8299 return manage(res);
8300}
8301
8302map map::floordiv_val(val d) const
8303{
8304 auto res = isl_map_floordiv_val(copy(), d.release());
8305 return manage(res);
8306}
8307
8308stat map::foreach_basic_map(const std::function<stat(basic_map)> &fn) const
8309{
8310 struct fn_data {
8311 const std::function<stat(basic_map)> *func;
8312 } fn_data = { &fn };
8313 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
8314 auto *data = static_cast<struct fn_data *>(arg_1);
8315 stat ret = (*data->func)(manage(arg_0));
8316 return ret.release();
8317 };
8318 auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
8319 return manage(res);
8320}
8321
8322map map::from_aff(aff aff)
8323{
8324 auto res = isl_map_from_aff(aff.release());
8325 return manage(res);
8326}
8327
8328map map::from_domain(set set)
8329{
8330 auto res = isl_map_from_domain(set.release());
8331 return manage(res);
8332}
8333
8334map map::from_domain_and_range(set domain, set range)
8335{
8336 auto res = isl_map_from_domain_and_range(domain.release(), range.release());
8337 return manage(res);
8338}
8339
8340map map::from_multi_aff(multi_aff maff)
8341{
8342 auto res = isl_map_from_multi_aff(maff.release());
8343 return manage(res);
8344}
8345
8346map map::from_multi_pw_aff(multi_pw_aff mpa)
8347{
8348 auto res = isl_map_from_multi_pw_aff(mpa.release());
8349 return manage(res);
8350}
8351
8352map map::from_pw_aff(pw_aff pwaff)
8353{
8354 auto res = isl_map_from_pw_aff(pwaff.release());
8355 return manage(res);
8356}
8357
8358map map::from_pw_multi_aff(pw_multi_aff pma)
8359{
8360 auto res = isl_map_from_pw_multi_aff(pma.release());
8361 return manage(res);
8362}
8363
8364map map::from_range(set set)
8365{
8366 auto res = isl_map_from_range(set.release());
8367 return manage(res);
8368}
8369
8370map map::from_union_map(union_map umap)
8371{
8372 auto res = isl_map_from_union_map(umap.release());
8373 return manage(res);
8374}
8375
8376basic_map_list map::get_basic_map_list() const
8377{
8378 auto res = isl_map_get_basic_map_list(get());
8379 return manage(res);
8380}
8381
8382id map::get_dim_id(isl::dim type, unsigned int pos) const
8383{
8384 auto res = isl_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8385 return manage(res);
8386}
8387
8388std::string map::get_dim_name(isl::dim type, unsigned int pos) const
8389{
8390 auto res = isl_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8391 std::string tmp(res);
8392 return tmp;
8393}
8394
8395uint32_t map::get_hash() const
8396{
8397 auto res = isl_map_get_hash(get());
8398 return res;
8399}
8400
8401fixed_box map::get_range_simple_fixed_box_hull() const
8402{
8403 auto res = isl_map_get_range_simple_fixed_box_hull(get());
8404 return manage(res);
8405}
8406
8407space map::get_space() const
8408{
8409 auto res = isl_map_get_space(get());
8410 return manage(res);
8411}
8412
8413id map::get_tuple_id(isl::dim type) const
8414{
8415 auto res = isl_map_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8416 return manage(res);
8417}
8418
8419std::string map::get_tuple_name(isl::dim type) const
8420{
8421 auto res = isl_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8422 std::string tmp(res);
8423 return tmp;
8424}
8425
8426map map::gist(map context) const
8427{
8428 auto res = isl_map_gist(copy(), context.release());
8429 return manage(res);
8430}
8431
8432map map::gist_basic_map(basic_map context) const
8433{
8434 auto res = isl_map_gist_basic_map(copy(), context.release());
8435 return manage(res);
8436}
8437
8438map map::gist_domain(set context) const
8439{
8440 auto res = isl_map_gist_domain(copy(), context.release());
8441 return manage(res);
8442}
8443
8444map map::gist_params(set context) const
8445{
8446 auto res = isl_map_gist_params(copy(), context.release());
8447 return manage(res);
8448}
8449
8450map map::gist_range(set context) const
8451{
8452 auto res = isl_map_gist_range(copy(), context.release());
8453 return manage(res);
8454}
8455
8456boolean map::has_dim_id(isl::dim type, unsigned int pos) const
8457{
8458 auto res = isl_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8459 return manage(res);
8460}
8461
8462boolean map::has_dim_name(isl::dim type, unsigned int pos) const
8463{
8464 auto res = isl_map_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8465 return manage(res);
8466}
8467
8468boolean map::has_equal_space(const map &map2) const
8469{
8470 auto res = isl_map_has_equal_space(get(), map2.get());
8471 return manage(res);
8472}
8473
8474boolean map::has_tuple_id(isl::dim type) const
8475{
8476 auto res = isl_map_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8477 return manage(res);
8478}
8479
8480boolean map::has_tuple_name(isl::dim type) const
8481{
8482 auto res = isl_map_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8483 return manage(res);
8484}
8485
8486map map::identity(space dim)
8487{
8488 auto res = isl_map_identity(dim.release());
8489 return manage(res);
8490}
8491
8492map map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
8493{
8494 auto res = isl_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
8495 return manage(res);
8496}
8497
8498map map::intersect(map map2) const
8499{
8500 auto res = isl_map_intersect(copy(), map2.release());
8501 return manage(res);
8502}
8503
8504map map::intersect_domain(set set) const
8505{
8506 auto res = isl_map_intersect_domain(copy(), set.release());
8507 return manage(res);
8508}
8509
8510map map::intersect_domain_factor_range(map factor) const
8511{
8512 auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
8513 return manage(res);
8514}
8515
8516map map::intersect_params(set params) const
8517{
8518 auto res = isl_map_intersect_params(copy(), params.release());
8519 return manage(res);
8520}
8521
8522map map::intersect_range(set set) const
8523{
8524 auto res = isl_map_intersect_range(copy(), set.release());
8525 return manage(res);
8526}
8527
8528map map::intersect_range_factor_range(map factor) const
8529{
8530 auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
8531 return manage(res);
8532}
8533
8534boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
8535{
8536 auto res = isl_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
8537 return manage(res);
8538}
8539
8540boolean map::is_bijective() const
8541{
8542 auto res = isl_map_is_bijective(get());
8543 return manage(res);
8544}
8545
8546boolean map::is_disjoint(const map &map2) const
8547{
8548 auto res = isl_map_is_disjoint(get(), map2.get());
8549 return manage(res);
8550}
8551
8552boolean map::is_empty() const
8553{
8554 auto res = isl_map_is_empty(get());
8555 return manage(res);
8556}
8557
8558boolean map::is_equal(const map &map2) const
8559{
8560 auto res = isl_map_is_equal(get(), map2.get());
8561 return manage(res);
8562}
8563
8564boolean map::is_identity() const
8565{
8566 auto res = isl_map_is_identity(get());
8567 return manage(res);
8568}
8569
8570boolean map::is_injective() const
8571{
8572 auto res = isl_map_is_injective(get());
8573 return manage(res);
8574}
8575
8576boolean map::is_product() const
8577{
8578 auto res = isl_map_is_product(get());
8579 return manage(res);
8580}
8581
8582boolean map::is_single_valued() const
8583{
8584 auto res = isl_map_is_single_valued(get());
8585 return manage(res);
8586}
8587
8588boolean map::is_strict_subset(const map &map2) const
8589{
8590 auto res = isl_map_is_strict_subset(get(), map2.get());
8591 return manage(res);
8592}
8593
8594boolean map::is_subset(const map &map2) const
8595{
8596 auto res = isl_map_is_subset(get(), map2.get());
8597 return manage(res);
8598}
8599
8600int map::is_translation() const
8601{
8602 auto res = isl_map_is_translation(get());
8603 return res;
8604}
8605
8606map map::lex_ge(space set_dim)
8607{
8608 auto res = isl_map_lex_ge(set_dim.release());
8609 return manage(res);
8610}
8611
8612map map::lex_ge_first(space dim, unsigned int n)
8613{
8614 auto res = isl_map_lex_ge_first(dim.release(), n);
8615 return manage(res);
8616}
8617
8618map map::lex_ge_map(map map2) const
8619{
8620 auto res = isl_map_lex_ge_map(copy(), map2.release());
8621 return manage(res);
8622}
8623
8624map map::lex_gt(space set_dim)
8625{
8626 auto res = isl_map_lex_gt(set_dim.release());
8627 return manage(res);
8628}
8629
8630map map::lex_gt_first(space dim, unsigned int n)
8631{
8632 auto res = isl_map_lex_gt_first(dim.release(), n);
8633 return manage(res);
8634}
8635
8636map map::lex_gt_map(map map2) const
8637{
8638 auto res = isl_map_lex_gt_map(copy(), map2.release());
8639 return manage(res);
8640}
8641
8642map map::lex_le(space set_dim)
8643{
8644 auto res = isl_map_lex_le(set_dim.release());
8645 return manage(res);
8646}
8647
8648map map::lex_le_first(space dim, unsigned int n)
8649{
8650 auto res = isl_map_lex_le_first(dim.release(), n);
8651 return manage(res);
8652}
8653
8654map map::lex_le_map(map map2) const
8655{
8656 auto res = isl_map_lex_le_map(copy(), map2.release());
8657 return manage(res);
8658}
8659
8660map map::lex_lt(space set_dim)
8661{
8662 auto res = isl_map_lex_lt(set_dim.release());
8663 return manage(res);
8664}
8665
8666map map::lex_lt_first(space dim, unsigned int n)
8667{
8668 auto res = isl_map_lex_lt_first(dim.release(), n);
8669 return manage(res);
8670}
8671
8672map map::lex_lt_map(map map2) const
8673{
8674 auto res = isl_map_lex_lt_map(copy(), map2.release());
8675 return manage(res);
8676}
8677
8678map map::lexmax() const
8679{
8680 auto res = isl_map_lexmax(copy());
8681 return manage(res);
8682}
8683
8684pw_multi_aff map::lexmax_pw_multi_aff() const
8685{
8686 auto res = isl_map_lexmax_pw_multi_aff(copy());
8687 return manage(res);
8688}
8689
8690map map::lexmin() const
8691{
8692 auto res = isl_map_lexmin(copy());
8693 return manage(res);
8694}
8695
8696pw_multi_aff map::lexmin_pw_multi_aff() const
8697{
8698 auto res = isl_map_lexmin_pw_multi_aff(copy());
8699 return manage(res);
8700}
8701
8702map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
8703{
8704 auto res = isl_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8705 return manage(res);
8706}
8707
8708map map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
8709{
8710 auto res = isl_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
8711 return manage(res);
8712}
8713
8714int map::n_basic_map() const
8715{
8716 auto res = isl_map_n_basic_map(get());
8717 return res;
8718}
8719
8720map map::nat_universe(space dim)
8721{
8722 auto res = isl_map_nat_universe(dim.release());
8723 return manage(res);
8724}
8725
8726map map::neg() const
8727{
8728 auto res = isl_map_neg(copy());
8729 return manage(res);
8730}
8731
8732map map::oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8733{
8734 auto res = isl_map_oppose(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8735 return manage(res);
8736}
8737
8738map map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8739{
8740 auto res = isl_map_order_ge(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8741 return manage(res);
8742}
8743
8744map map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8745{
8746 auto res = isl_map_order_gt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8747 return manage(res);
8748}
8749
8750map map::order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8751{
8752 auto res = isl_map_order_le(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8753 return manage(res);
8754}
8755
8756map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8757{
8758 auto res = isl_map_order_lt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8759 return manage(res);
8760}
8761
8762set map::params() const
8763{
8764 auto res = isl_map_params(copy());
8765 return manage(res);
8766}
8767
8768val map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
8769{
8770 auto res = isl_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
8771 return manage(res);
8772}
8773
8774boolean map::plain_is_empty() const
8775{
8776 auto res = isl_map_plain_is_empty(get());
8777 return manage(res);
8778}
8779
8780boolean map::plain_is_equal(const map &map2) const
8781{
8782 auto res = isl_map_plain_is_equal(get(), map2.get());
8783 return manage(res);
8784}
8785
8786boolean map::plain_is_injective() const
8787{
8788 auto res = isl_map_plain_is_injective(get());
8789 return manage(res);
8790}
8791
8792boolean map::plain_is_single_valued() const
8793{
8794 auto res = isl_map_plain_is_single_valued(get());
8795 return manage(res);
8796}
8797
8798boolean map::plain_is_universe() const
8799{
8800 auto res = isl_map_plain_is_universe(get());
8801 return manage(res);
8802}
8803
8804basic_map map::plain_unshifted_simple_hull() const
8805{
8806 auto res = isl_map_plain_unshifted_simple_hull(copy());
8807 return manage(res);
8808}
8809
8810basic_map map::polyhedral_hull() const
8811{
8812 auto res = isl_map_polyhedral_hull(copy());
8813 return manage(res);
8814}
8815
8816map map::preimage_domain_multi_aff(multi_aff ma) const
8817{
8818 auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
8819 return manage(res);
8820}
8821
8822map map::preimage_domain_multi_pw_aff(multi_pw_aff mpa) const
8823{
8824 auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
8825 return manage(res);
8826}
8827
8828map map::preimage_domain_pw_multi_aff(pw_multi_aff pma) const
8829{
8830 auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
8831 return manage(res);
8832}
8833
8834map map::preimage_range_multi_aff(multi_aff ma) const
8835{
8836 auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
8837 return manage(res);
8838}
8839
8840map map::preimage_range_pw_multi_aff(pw_multi_aff pma) const
8841{
8842 auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
8843 return manage(res);
8844}
8845
8846map map::product(map map2) const
8847{
8848 auto res = isl_map_product(copy(), map2.release());
8849 return manage(res);
8850}
8851
8852map map::project_out(isl::dim type, unsigned int first, unsigned int n) const
8853{
8854 auto res = isl_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
8855 return manage(res);
8856}
8857
8858set map::range() const
8859{
8860 auto res = isl_map_range(copy());
8861 return manage(res);
8862}
8863
8864map map::range_curry() const
8865{
8866 auto res = isl_map_range_curry(copy());
8867 return manage(res);
8868}
8869
8870map map::range_factor_domain() const
8871{
8872 auto res = isl_map_range_factor_domain(copy());
8873 return manage(res);
8874}
8875
8876map map::range_factor_range() const
8877{
8878 auto res = isl_map_range_factor_range(copy());
8879 return manage(res);
8880}
8881
8882boolean map::range_is_wrapping() const
8883{
8884 auto res = isl_map_range_is_wrapping(get());
8885 return manage(res);
8886}
8887
8888map map::range_map() const
8889{
8890 auto res = isl_map_range_map(copy());
8891 return manage(res);
8892}
8893
8894map map::range_product(map map2) const
8895{
8896 auto res = isl_map_range_product(copy(), map2.release());
8897 return manage(res);
8898}
8899
8900map map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
8901{
8902 auto res = isl_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8903 return manage(res);
8904}
8905
8906map map::remove_divs() const
8907{
8908 auto res = isl_map_remove_divs(copy());
8909 return manage(res);
8910}
8911
8912map map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8913{
8914 auto res = isl_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8915 return manage(res);
8916}
8917
8918map map::remove_redundancies() const
8919{
8920 auto res = isl_map_remove_redundancies(copy());
8921 return manage(res);
8922}
8923
8924map map::remove_unknown_divs() const
8925{
8926 auto res = isl_map_remove_unknown_divs(copy());
8927 return manage(res);
8928}
8929
8930map map::reset_tuple_id(isl::dim type) const
8931{
8932 auto res = isl_map_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
8933 return manage(res);
8934}
8935
8936map map::reset_user() const
8937{
8938 auto res = isl_map_reset_user(copy());
8939 return manage(res);
8940}
8941
8942map map::reverse() const
8943{
8944 auto res = isl_map_reverse(copy());
8945 return manage(res);
8946}
8947
8948basic_map map::sample() const
8949{
8950 auto res = isl_map_sample(copy());
8951 return manage(res);
8952}
8953
8954map map::set_dim_id(isl::dim type, unsigned int pos, id id) const
8955{
8956 auto res = isl_map_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
8957 return manage(res);
8958}
8959
8960map map::set_tuple_id(isl::dim type, id id) const
8961{
8962 auto res = isl_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
8963 return manage(res);
8964}
8965
8966map map::set_tuple_name(isl::dim type, const std::string &s) const
8967{
8968 auto res = isl_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
8969 return manage(res);
8970}
8971
8972basic_map map::simple_hull() const
8973{
8974 auto res = isl_map_simple_hull(copy());
8975 return manage(res);
8976}
8977
8978map map::subtract(map map2) const
8979{
8980 auto res = isl_map_subtract(copy(), map2.release());
8981 return manage(res);
8982}
8983
8984map map::subtract_domain(set dom) const
8985{
8986 auto res = isl_map_subtract_domain(copy(), dom.release());
8987 return manage(res);
8988}
8989
8990map map::subtract_range(set dom) const
8991{
8992 auto res = isl_map_subtract_range(copy(), dom.release());
8993 return manage(res);
8994}
8995
8996map map::sum(map map2) const
8997{
8998 auto res = isl_map_sum(copy(), map2.release());
8999 return manage(res);
9000}
9001
9002map map::uncurry() const
9003{
9004 auto res = isl_map_uncurry(copy());
9005 return manage(res);
9006}
9007
9008map map::unite(map map2) const
9009{
9010 auto res = isl_map_union(copy(), map2.release());
9011 return manage(res);
9012}
9013
9014map map::universe(space space)
9015{
9016 auto res = isl_map_universe(space.release());
9017 return manage(res);
9018}
9019
9020basic_map map::unshifted_simple_hull() const
9021{
9022 auto res = isl_map_unshifted_simple_hull(copy());
9023 return manage(res);
9024}
9025
9026basic_map map::unshifted_simple_hull_from_map_list(map_list list) const
9027{
9028 auto res = isl_map_unshifted_simple_hull_from_map_list(copy(), list.release());
9029 return manage(res);
9030}
9031
9032map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
9033{
9034 auto res = isl_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
9035 return manage(res);
9036}
9037
9038set map::wrap() const
9039{
9040 auto res = isl_map_wrap(copy());
9041 return manage(res);
9042}
9043
9044map map::zip() const
9045{
9046 auto res = isl_map_zip(copy());
9047 return manage(res);
9048}
9049
9050// implementations for isl::map_list
9051map_list manage(__isl_take isl_map_list *ptr) {
9052 return map_list(ptr);
9053}
9054map_list manage_copy(__isl_keep isl_map_list *ptr) {
9055 ptr = isl_map_list_copy(ptr);
9056 return map_list(ptr);
9057}
9058
9059map_list::map_list()
9060 : ptr(nullptr) {}
9061
9062map_list::map_list(const map_list &obj)
9063 : ptr(nullptr)
9064{
9065 ptr = obj.copy();
9066}
9067map_list::map_list(std::nullptr_t)
9068 : ptr(nullptr) {}
9069
9070
9071map_list::map_list(__isl_take isl_map_list *ptr)
9072 : ptr(ptr) {}
9073
9074
9075map_list &map_list::operator=(map_list obj) {
9076 std::swap(this->ptr, obj.ptr);
9077 return *this;
9078}
9079
9080map_list::~map_list() {
9081 if (ptr)
9082 isl_map_list_free(ptr);
9083}
9084
9085__isl_give isl_map_list *map_list::copy() const & {
9086 return isl_map_list_copy(ptr);
9087}
9088
9089__isl_keep isl_map_list *map_list::get() const {
9090 return ptr;
9091}
9092
9093__isl_give isl_map_list *map_list::release() {
9094 isl_map_list *tmp = ptr;
9095 ptr = nullptr;
9096 return tmp;
9097}
9098
9099bool map_list::is_null() const {
9100 return ptr == nullptr;
9101}
9102map_list::operator bool() const {
9103 return !is_null();
9104}
9105
9106
9107ctx map_list::get_ctx() const {
9108 return ctx(isl_map_list_get_ctx(ptr));
9109}
9110
9111void map_list::dump() const {
9112 isl_map_list_dump(get());
9113}
9114
9115
9116map_list map_list::add(map el) const
9117{
9118 auto res = isl_map_list_add(copy(), el.release());
9119 return manage(res);
9120}
9121
9122map_list map_list::alloc(ctx ctx, int n)
9123{
9124 auto res = isl_map_list_alloc(ctx.release(), n);
9125 return manage(res);
9126}
9127
9128map_list map_list::concat(map_list list2) const
9129{
9130 auto res = isl_map_list_concat(copy(), list2.release());
9131 return manage(res);
9132}
9133
9134map_list map_list::drop(unsigned int first, unsigned int n) const
9135{
9136 auto res = isl_map_list_drop(copy(), first, n);
9137 return manage(res);
9138}
9139
9140stat map_list::foreach(const std::function<stat(map)> &fn) const
9141{
9142 struct fn_data {
9143 const std::function<stat(map)> *func;
9144 } fn_data = { &fn };
9145 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
9146 auto *data = static_cast<struct fn_data *>(arg_1);
9147 stat ret = (*data->func)(manage(arg_0));
9148 return ret.release();
9149 };
9150 auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
9151 return manage(res);
9152}
9153
9154map_list map_list::from_map(map el)
9155{
9156 auto res = isl_map_list_from_map(el.release());
9157 return manage(res);
9158}
9159
9160map map_list::get_at(int index) const
9161{
9162 auto res = isl_map_list_get_at(get(), index);
9163 return manage(res);
9164}
9165
9166map map_list::get_map(int index) const
9167{
9168 auto res = isl_map_list_get_map(get(), index);
9169 return manage(res);
9170}
9171
9172map_list map_list::insert(unsigned int pos, map el) const
9173{
9174 auto res = isl_map_list_insert(copy(), pos, el.release());
9175 return manage(res);
9176}
9177
9178int map_list::n_map() const
9179{
9180 auto res = isl_map_list_n_map(get());
9181 return res;
9182}
9183
9184map_list map_list::reverse() const
9185{
9186 auto res = isl_map_list_reverse(copy());
9187 return manage(res);
9188}
9189
9190map_list map_list::set_map(int index, map el) const
9191{
9192 auto res = isl_map_list_set_map(copy(), index, el.release());
9193 return manage(res);
9194}
9195
9196int map_list::size() const
9197{
9198 auto res = isl_map_list_size(get());
9199 return res;
9200}
9201
9202map_list map_list::swap(unsigned int pos1, unsigned int pos2) const
9203{
9204 auto res = isl_map_list_swap(copy(), pos1, pos2);
9205 return manage(res);
9206}
9207
9208// implementations for isl::mat
9209mat manage(__isl_take isl_mat *ptr) {
9210 return mat(ptr);
9211}
9212mat manage_copy(__isl_keep isl_mat *ptr) {
9213 ptr = isl_mat_copy(ptr);
9214 return mat(ptr);
9215}
9216
9217mat::mat()
9218 : ptr(nullptr) {}
9219
9220mat::mat(const mat &obj)
9221 : ptr(nullptr)
9222{
9223 ptr = obj.copy();
9224}
9225mat::mat(std::nullptr_t)
9226 : ptr(nullptr) {}
9227
9228
9229mat::mat(__isl_take isl_mat *ptr)
9230 : ptr(ptr) {}
9231
9232
9233mat &mat::operator=(mat obj) {
9234 std::swap(this->ptr, obj.ptr);
9235 return *this;
9236}
9237
9238mat::~mat() {
9239 if (ptr)
9240 isl_mat_free(ptr);
9241}
9242
9243__isl_give isl_mat *mat::copy() const & {
9244 return isl_mat_copy(ptr);
9245}
9246
9247__isl_keep isl_mat *mat::get() const {
9248 return ptr;
9249}
9250
9251__isl_give isl_mat *mat::release() {
9252 isl_mat *tmp = ptr;
9253 ptr = nullptr;
9254 return tmp;
9255}
9256
9257bool mat::is_null() const {
9258 return ptr == nullptr;
9259}
9260mat::operator bool() const {
9261 return !is_null();
9262}
9263
9264
9265ctx mat::get_ctx() const {
9266 return ctx(isl_mat_get_ctx(ptr));
9267}
9268
9269void mat::dump() const {
9270 isl_mat_dump(get());
9271}
9272
9273
9274mat mat::add_rows(unsigned int n) const
9275{
9276 auto res = isl_mat_add_rows(copy(), n);
9277 return manage(res);
9278}
9279
9280mat mat::add_zero_cols(unsigned int n) const
9281{
9282 auto res = isl_mat_add_zero_cols(copy(), n);
9283 return manage(res);
9284}
9285
9286mat mat::add_zero_rows(unsigned int n) const
9287{
9288 auto res = isl_mat_add_zero_rows(copy(), n);
9289 return manage(res);
9290}
9291
9292mat mat::aff_direct_sum(mat right) const
9293{
9294 auto res = isl_mat_aff_direct_sum(copy(), right.release());
9295 return manage(res);
9296}
9297
9298mat mat::alloc(ctx ctx, unsigned int n_row, unsigned int n_col)
9299{
9300 auto res = isl_mat_alloc(ctx.release(), n_row, n_col);
9301 return manage(res);
9302}
9303
9304int mat::cols() const
9305{
9306 auto res = isl_mat_cols(get());
9307 return res;
9308}
9309
9310mat mat::concat(mat bot) const
9311{
9312 auto res = isl_mat_concat(copy(), bot.release());
9313 return manage(res);
9314}
9315
9316mat mat::diagonal(mat mat2) const
9317{
9318 auto res = isl_mat_diagonal(copy(), mat2.release());
9319 return manage(res);
9320}
9321
9322mat mat::drop_cols(unsigned int col, unsigned int n) const
9323{
9324 auto res = isl_mat_drop_cols(copy(), col, n);
9325 return manage(res);
9326}
9327
9328mat mat::drop_rows(unsigned int row, unsigned int n) const
9329{
9330 auto res = isl_mat_drop_rows(copy(), row, n);
9331 return manage(res);
9332}
9333
9334mat mat::from_row_vec(vec vec)
9335{
9336 auto res = isl_mat_from_row_vec(vec.release());
9337 return manage(res);
9338}
9339
9340val mat::get_element_val(int row, int col) const
9341{
9342 auto res = isl_mat_get_element_val(get(), row, col);
9343 return manage(res);
9344}
9345
9346boolean mat::has_linearly_independent_rows(const mat &mat2) const
9347{
9348 auto res = isl_mat_has_linearly_independent_rows(get(), mat2.get());
9349 return manage(res);
9350}
9351
9352int mat::initial_non_zero_cols() const
9353{
9354 auto res = isl_mat_initial_non_zero_cols(get());
9355 return res;
9356}
9357
9358mat mat::insert_cols(unsigned int col, unsigned int n) const
9359{
9360 auto res = isl_mat_insert_cols(copy(), col, n);
9361 return manage(res);
9362}
9363
9364mat mat::insert_rows(unsigned int row, unsigned int n) const
9365{
9366 auto res = isl_mat_insert_rows(copy(), row, n);
9367 return manage(res);
9368}
9369
9370mat mat::insert_zero_cols(unsigned int first, unsigned int n) const
9371{
9372 auto res = isl_mat_insert_zero_cols(copy(), first, n);
9373 return manage(res);
9374}
9375
9376mat mat::insert_zero_rows(unsigned int row, unsigned int n) const
9377{
9378 auto res = isl_mat_insert_zero_rows(copy(), row, n);
9379 return manage(res);
9380}
9381
9382mat mat::inverse_product(mat right) const
9383{
9384 auto res = isl_mat_inverse_product(copy(), right.release());
9385 return manage(res);
9386}
9387
9388boolean mat::is_equal(const mat &mat2) const
9389{
9390 auto res = isl_mat_is_equal(get(), mat2.get());
9391 return manage(res);
9392}
9393
9394mat mat::lin_to_aff() const
9395{
9396 auto res = isl_mat_lin_to_aff(copy());
9397 return manage(res);
9398}
9399
9400mat mat::move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const
9401{
9402 auto res = isl_mat_move_cols(copy(), dst_col, src_col, n);
9403 return manage(res);
9404}
9405
9406mat mat::normalize() const
9407{
9408 auto res = isl_mat_normalize(copy());
9409 return manage(res);
9410}
9411
9412mat mat::normalize_row(int row) const
9413{
9414 auto res = isl_mat_normalize_row(copy(), row);
9415 return manage(res);
9416}
9417
9418mat mat::product(mat right) const
9419{
9420 auto res = isl_mat_product(copy(), right.release());
9421 return manage(res);
9422}
9423
9424int mat::rank() const
9425{
9426 auto res = isl_mat_rank(get());
9427 return res;
9428}
9429
9430mat mat::right_inverse() const
9431{
9432 auto res = isl_mat_right_inverse(copy());
9433 return manage(res);
9434}
9435
9436mat mat::right_kernel() const
9437{
9438 auto res = isl_mat_right_kernel(copy());
9439 return manage(res);
9440}
9441
9442mat mat::row_basis() const
9443{
9444 auto res = isl_mat_row_basis(copy());
9445 return manage(res);
9446}
9447
9448mat mat::row_basis_extension(mat mat2) const
9449{
9450 auto res = isl_mat_row_basis_extension(copy(), mat2.release());
9451 return manage(res);
9452}
9453
9454int mat::rows() const
9455{
9456 auto res = isl_mat_rows(get());
9457 return res;
9458}
9459
9460mat mat::set_element_si(int row, int col, int v) const
9461{
9462 auto res = isl_mat_set_element_si(copy(), row, col, v);
9463 return manage(res);
9464}
9465
9466mat mat::set_element_val(int row, int col, val v) const
9467{
9468 auto res = isl_mat_set_element_val(copy(), row, col, v.release());
9469 return manage(res);
9470}
9471
9472mat mat::swap_cols(unsigned int i, unsigned int j) const
9473{
9474 auto res = isl_mat_swap_cols(copy(), i, j);
9475 return manage(res);
9476}
9477
9478mat mat::swap_rows(unsigned int i, unsigned int j) const
9479{
9480 auto res = isl_mat_swap_rows(copy(), i, j);
9481 return manage(res);
9482}
9483
9484mat mat::transpose() const
9485{
9486 auto res = isl_mat_transpose(copy());
9487 return manage(res);
9488}
9489
9490mat mat::unimodular_complete(int row) const
9491{
9492 auto res = isl_mat_unimodular_complete(copy(), row);
9493 return manage(res);
9494}
9495
9496mat mat::vec_concat(vec bot) const
9497{
9498 auto res = isl_mat_vec_concat(copy(), bot.release());
9499 return manage(res);
9500}
9501
9502vec mat::vec_inverse_product(vec vec) const
9503{
9504 auto res = isl_mat_vec_inverse_product(copy(), vec.release());
9505 return manage(res);
9506}
9507
9508vec mat::vec_product(vec vec) const
9509{
9510 auto res = isl_mat_vec_product(copy(), vec.release());
9511 return manage(res);
9512}
9513
9514// implementations for isl::multi_aff
9515multi_aff manage(__isl_take isl_multi_aff *ptr) {
9516 return multi_aff(ptr);
9517}
9518multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
9519 ptr = isl_multi_aff_copy(ptr);
9520 return multi_aff(ptr);
9521}
9522
9523multi_aff::multi_aff()
9524 : ptr(nullptr) {}
9525
9526multi_aff::multi_aff(const multi_aff &obj)
9527 : ptr(nullptr)
9528{
9529 ptr = obj.copy();
9530}
9531multi_aff::multi_aff(std::nullptr_t)
9532 : ptr(nullptr) {}
9533
9534
9535multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
9536 : ptr(ptr) {}
9537
9538multi_aff::multi_aff(aff aff)
9539{
9540 auto res = isl_multi_aff_from_aff(aff.release());
9541 ptr = res;
9542}
9543multi_aff::multi_aff(ctx ctx, const std::string &str)
9544{
9545 auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
9546 ptr = res;
9547}
9548
9549multi_aff &multi_aff::operator=(multi_aff obj) {
9550 std::swap(this->ptr, obj.ptr);
9551 return *this;
9552}
9553
9554multi_aff::~multi_aff() {
9555 if (ptr)
9556 isl_multi_aff_free(ptr);
9557}
9558
9559__isl_give isl_multi_aff *multi_aff::copy() const & {
9560 return isl_multi_aff_copy(ptr);
9561}
9562
9563__isl_keep isl_multi_aff *multi_aff::get() const {
9564 return ptr;
9565}
9566
9567__isl_give isl_multi_aff *multi_aff::release() {
9568 isl_multi_aff *tmp = ptr;
9569 ptr = nullptr;
9570 return tmp;
9571}
9572
9573bool multi_aff::is_null() const {
9574 return ptr == nullptr;
9575}
9576multi_aff::operator bool() const {
9577 return !is_null();
9578}
9579
9580
9581ctx multi_aff::get_ctx() const {
9582 return ctx(isl_multi_aff_get_ctx(ptr));
9583}
9584std::string multi_aff::to_str() const {
9585 char *Tmp = isl_multi_aff_to_str(get());
9586 if (!Tmp)
9587 return "";
9588 std::string S(Tmp);
9589 free(Tmp);
9590 return S;
9591}
9592
9593
9594void multi_aff::dump() const {
9595 isl_multi_aff_dump(get());
9596}
9597
9598
9599multi_aff multi_aff::add(multi_aff multi2) const
9600{
9601 auto res = isl_multi_aff_add(copy(), multi2.release());
9602 return manage(res);
9603}
9604
9605multi_aff multi_aff::add_dims(isl::dim type, unsigned int n) const
9606{
9607 auto res = isl_multi_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
9608 return manage(res);
9609}
9610
9611multi_aff multi_aff::align_params(space model) const
9612{
9613 auto res = isl_multi_aff_align_params(copy(), model.release());
9614 return manage(res);
9615}
9616
9617unsigned int multi_aff::dim(isl::dim type) const
9618{
9619 auto res = isl_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
9620 return res;
9621}
9622
9623multi_aff multi_aff::domain_map(space space)
9624{
9625 auto res = isl_multi_aff_domain_map(space.release());
9626 return manage(res);
9627}
9628
9629multi_aff multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
9630{
9631 auto res = isl_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9632 return manage(res);
9633}
9634
9635multi_aff multi_aff::factor_range() const
9636{
9637 auto res = isl_multi_aff_factor_range(copy());
9638 return manage(res);
9639}
9640
9641int multi_aff::find_dim_by_id(isl::dim type, const id &id) const
9642{
9643 auto res = isl_multi_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
9644 return res;
9645}
9646
9647int multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
9648{
9649 auto res = isl_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
9650 return res;
9651}
9652
9653multi_aff multi_aff::flat_range_product(multi_aff multi2) const
9654{
9655 auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
9656 return manage(res);
9657}
9658
9659multi_aff multi_aff::flatten_domain() const
9660{
9661 auto res = isl_multi_aff_flatten_domain(copy());
9662 return manage(res);
9663}
9664
9665multi_aff multi_aff::flatten_range() const
9666{
9667 auto res = isl_multi_aff_flatten_range(copy());
9668 return manage(res);
9669}
9670
9671multi_aff multi_aff::floor() const
9672{
9673 auto res = isl_multi_aff_floor(copy());
9674 return manage(res);
9675}
9676
9677multi_aff multi_aff::from_aff_list(space space, aff_list list)
9678{
9679 auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
9680 return manage(res);
9681}
9682
9683multi_aff multi_aff::from_range() const
9684{
9685 auto res = isl_multi_aff_from_range(copy());
9686 return manage(res);
9687}
9688
9689aff multi_aff::get_aff(int pos) const
9690{
9691 auto res = isl_multi_aff_get_aff(get(), pos);
9692 return manage(res);
9693}
9694
9695id multi_aff::get_dim_id(isl::dim type, unsigned int pos) const
9696{
9697 auto res = isl_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
9698 return manage(res);
9699}
9700
9701space multi_aff::get_domain_space() const
9702{
9703 auto res = isl_multi_aff_get_domain_space(get());
9704 return manage(res);
9705}
9706
9707space multi_aff::get_space() const
9708{
9709 auto res = isl_multi_aff_get_space(get());
9710 return manage(res);
9711}
9712
9713id multi_aff::get_tuple_id(isl::dim type) const
9714{
9715 auto res = isl_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9716 return manage(res);
9717}
9718
9719std::string multi_aff::get_tuple_name(isl::dim type) const
9720{
9721 auto res = isl_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
9722 std::string tmp(res);
9723 return tmp;
9724}
9725
9726multi_aff multi_aff::gist(set context) const
9727{
9728 auto res = isl_multi_aff_gist(copy(), context.release());
9729 return manage(res);
9730}
9731
9732multi_aff multi_aff::gist_params(set context) const
9733{
9734 auto res = isl_multi_aff_gist_params(copy(), context.release());
9735 return manage(res);
9736}
9737
9738boolean multi_aff::has_tuple_id(isl::dim type) const
9739{
9740 auto res = isl_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9741 return manage(res);
9742}
9743
9744multi_aff multi_aff::identity(space space)
9745{
9746 auto res = isl_multi_aff_identity(space.release());
9747 return manage(res);
9748}
9749
9750multi_aff multi_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
9751{
9752 auto res = isl_multi_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9753 return manage(res);
9754}
9755
9756boolean multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
9757{
9758 auto res = isl_multi_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
9759 return manage(res);
9760}
9761
9762boolean multi_aff::involves_nan() const
9763{
9764 auto res = isl_multi_aff_involves_nan(get());
9765 return manage(res);
9766}
9767
9768set multi_aff::lex_ge_set(multi_aff ma2) const
9769{
9770 auto res = isl_multi_aff_lex_ge_set(copy(), ma2.release());
9771 return manage(res);
9772}
9773
9774set multi_aff::lex_gt_set(multi_aff ma2) const
9775{
9776 auto res = isl_multi_aff_lex_gt_set(copy(), ma2.release());
9777 return manage(res);
9778}
9779
9780set multi_aff::lex_le_set(multi_aff ma2) const
9781{
9782 auto res = isl_multi_aff_lex_le_set(copy(), ma2.release());
9783 return manage(res);
9784}
9785
9786set multi_aff::lex_lt_set(multi_aff ma2) const
9787{
9788 auto res = isl_multi_aff_lex_lt_set(copy(), ma2.release());
9789 return manage(res);
9790}
9791
9792multi_aff multi_aff::mod_multi_val(multi_val mv) const
9793{
9794 auto res = isl_multi_aff_mod_multi_val(copy(), mv.release());
9795 return manage(res);
9796}
9797
9798multi_aff multi_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
9799{
9800 auto res = isl_multi_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
9801 return manage(res);
9802}
9803
9804multi_aff multi_aff::multi_val_on_space(space space, multi_val mv)
9805{
9806 auto res = isl_multi_aff_multi_val_on_space(space.release(), mv.release());
9807 return manage(res);
9808}
9809
9810multi_aff multi_aff::neg() const
9811{
9812 auto res = isl_multi_aff_neg(copy());
9813 return manage(res);
9814}
9815
9816int multi_aff::plain_cmp(const multi_aff &multi2) const
9817{
9818 auto res = isl_multi_aff_plain_cmp(get(), multi2.get());
9819 return res;
9820}
9821
9822boolean multi_aff::plain_is_equal(const multi_aff &multi2) const
9823{
9824 auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
9825 return manage(res);
9826}
9827
9828multi_aff multi_aff::product(multi_aff multi2) const
9829{
9830 auto res = isl_multi_aff_product(copy(), multi2.release());
9831 return manage(res);
9832}
9833
9834multi_aff multi_aff::project_domain_on_params() const
9835{
9836 auto res = isl_multi_aff_project_domain_on_params(copy());
9837 return manage(res);
9838}
9839
9840multi_aff multi_aff::project_out_map(space space, isl::dim type, unsigned int first, unsigned int n)
9841{
9842 auto res = isl_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
9843 return manage(res);
9844}
9845
9846multi_aff multi_aff::pullback(multi_aff ma2) const
9847{
9848 auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
9849 return manage(res);
9850}
9851
9852multi_aff multi_aff::range_factor_domain() const
9853{
9854 auto res = isl_multi_aff_range_factor_domain(copy());
9855 return manage(res);
9856}
9857
9858multi_aff multi_aff::range_factor_range() const
9859{
9860 auto res = isl_multi_aff_range_factor_range(copy());
9861 return manage(res);
9862}
9863
9864boolean multi_aff::range_is_wrapping() const
9865{
9866 auto res = isl_multi_aff_range_is_wrapping(get());
9867 return manage(res);
9868}
9869
9870multi_aff multi_aff::range_map(space space)
9871{
9872 auto res = isl_multi_aff_range_map(space.release());
9873 return manage(res);
9874}
9875
9876multi_aff multi_aff::range_product(multi_aff multi2) const
9877{
9878 auto res = isl_multi_aff_range_product(copy(), multi2.release());
9879 return manage(res);
9880}
9881
9882multi_aff multi_aff::range_splice(unsigned int pos, multi_aff multi2) const
9883{
9884 auto res = isl_multi_aff_range_splice(copy(), pos, multi2.release());
9885 return manage(res);
9886}
9887
9888multi_aff multi_aff::reset_tuple_id(isl::dim type) const
9889{
9890 auto res = isl_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
9891 return manage(res);
9892}
9893
9894multi_aff multi_aff::reset_user() const
9895{
9896 auto res = isl_multi_aff_reset_user(copy());
9897 return manage(res);
9898}
9899
9900multi_aff multi_aff::scale_down_multi_val(multi_val mv) const
9901{
9902 auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
9903 return manage(res);
9904}
9905
9906multi_aff multi_aff::scale_down_val(val v) const
9907{
9908 auto res = isl_multi_aff_scale_down_val(copy(), v.release());
9909 return manage(res);
9910}
9911
9912multi_aff multi_aff::scale_multi_val(multi_val mv) const
9913{
9914 auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
9915 return manage(res);
9916}
9917
9918multi_aff multi_aff::scale_val(val v) const
9919{
9920 auto res = isl_multi_aff_scale_val(copy(), v.release());
9921 return manage(res);
9922}
9923
9924multi_aff multi_aff::set_aff(int pos, aff el) const
9925{
9926 auto res = isl_multi_aff_set_aff(copy(), pos, el.release());
9927 return manage(res);
9928}
9929
9930multi_aff multi_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
9931{
9932 auto res = isl_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
9933 return manage(res);
9934}
9935
9936multi_aff multi_aff::set_tuple_id(isl::dim type, id id) const
9937{
9938 auto res = isl_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
9939 return manage(res);
9940}
9941
9942multi_aff multi_aff::set_tuple_name(isl::dim type, const std::string &s) const
9943{
9944 auto res = isl_multi_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
9945 return manage(res);
9946}
9947
9948multi_aff multi_aff::splice(unsigned int in_pos, unsigned int out_pos, multi_aff multi2) const
9949{
9950 auto res = isl_multi_aff_splice(copy(), in_pos, out_pos, multi2.release());
9951 return manage(res);
9952}
9953
9954multi_aff multi_aff::sub(multi_aff multi2) const
9955{
9956 auto res = isl_multi_aff_sub(copy(), multi2.release());
9957 return manage(res);
9958}
9959
9960multi_aff multi_aff::zero(space space)
9961{
9962 auto res = isl_multi_aff_zero(space.release());
9963 return manage(res);
9964}
9965
9966// implementations for isl::multi_pw_aff
9967multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
9968 return multi_pw_aff(ptr);
9969}
9970multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
9971 ptr = isl_multi_pw_aff_copy(ptr);
9972 return multi_pw_aff(ptr);
9973}
9974
9975multi_pw_aff::multi_pw_aff()
9976 : ptr(nullptr) {}
9977
9978multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
9979 : ptr(nullptr)
9980{
9981 ptr = obj.copy();
9982}
9983multi_pw_aff::multi_pw_aff(std::nullptr_t)
9984 : ptr(nullptr) {}
9985
9986
9987multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
9988 : ptr(ptr) {}
9989
9990multi_pw_aff::multi_pw_aff(multi_aff ma)
9991{
9992 auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
9993 ptr = res;
9994}
9995multi_pw_aff::multi_pw_aff(pw_aff pa)
9996{
9997 auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
9998 ptr = res;
9999}
10000multi_pw_aff::multi_pw_aff(pw_multi_aff pma)
10001{
10002 auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
10003 ptr = res;
10004}
10005multi_pw_aff::multi_pw_aff(ctx ctx, const std::string &str)
10006{
10007 auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
10008 ptr = res;
10009}
10010
10011multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
10012 std::swap(this->ptr, obj.ptr);
10013 return *this;
10014}
10015
10016multi_pw_aff::~multi_pw_aff() {
10017 if (ptr)
10018 isl_multi_pw_aff_free(ptr);
10019}
10020
10021__isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
10022 return isl_multi_pw_aff_copy(ptr);
10023}
10024
10025__isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
10026 return ptr;
10027}
10028
10029__isl_give isl_multi_pw_aff *multi_pw_aff::release() {
10030 isl_multi_pw_aff *tmp = ptr;
10031 ptr = nullptr;
10032 return tmp;
10033}
10034
10035bool multi_pw_aff::is_null() const {
10036 return ptr == nullptr;
10037}
10038multi_pw_aff::operator bool() const {
10039 return !is_null();
10040}
10041
10042
10043ctx multi_pw_aff::get_ctx() const {
10044 return ctx(isl_multi_pw_aff_get_ctx(ptr));
10045}
10046std::string multi_pw_aff::to_str() const {
10047 char *Tmp = isl_multi_pw_aff_to_str(get());
10048 if (!Tmp)
10049 return "";
10050 std::string S(Tmp);
10051 free(Tmp);
10052 return S;
10053}
10054
10055
10056void multi_pw_aff::dump() const {
10057 isl_multi_pw_aff_dump(get());
10058}
10059
10060
10061multi_pw_aff multi_pw_aff::add(multi_pw_aff multi2) const
10062{
10063 auto res = isl_multi_pw_aff_add(copy(), multi2.release());
10064 return manage(res);
10065}
10066
10067multi_pw_aff multi_pw_aff::add_dims(isl::dim type, unsigned int n) const
10068{
10069 auto res = isl_multi_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10070 return manage(res);
10071}
10072
10073multi_pw_aff multi_pw_aff::align_params(space model) const
10074{
10075 auto res = isl_multi_pw_aff_align_params(copy(), model.release());
10076 return manage(res);
10077}
10078
10079multi_pw_aff multi_pw_aff::coalesce() const
10080{
10081 auto res = isl_multi_pw_aff_coalesce(copy());
10082 return manage(res);
10083}
10084
10085unsigned int multi_pw_aff::dim(isl::dim type) const
10086{
10087 auto res = isl_multi_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
10088 return res;
10089}
10090
10091set multi_pw_aff::domain() const
10092{
10093 auto res = isl_multi_pw_aff_domain(copy());
10094 return manage(res);
10095}
10096
10097multi_pw_aff multi_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
10098{
10099 auto res = isl_multi_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10100 return manage(res);
10101}
10102
10103map multi_pw_aff::eq_map(multi_pw_aff mpa2) const
10104{
10105 auto res = isl_multi_pw_aff_eq_map(copy(), mpa2.release());
10106 return manage(res);
10107}
10108
10109multi_pw_aff multi_pw_aff::factor_range() const
10110{
10111 auto res = isl_multi_pw_aff_factor_range(copy());
10112 return manage(res);
10113}
10114
10115int multi_pw_aff::find_dim_by_id(isl::dim type, const id &id) const
10116{
10117 auto res = isl_multi_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
10118 return res;
10119}
10120
10121int multi_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
10122{
10123 auto res = isl_multi_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
10124 return res;
10125}
10126
10127multi_pw_aff multi_pw_aff::flat_range_product(multi_pw_aff multi2) const
10128{
10129 auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
10130 return manage(res);
10131}
10132
10133multi_pw_aff multi_pw_aff::flatten_range() const
10134{
10135 auto res = isl_multi_pw_aff_flatten_range(copy());
10136 return manage(res);
10137}
10138
10139multi_pw_aff multi_pw_aff::from_pw_aff_list(space space, pw_aff_list list)
10140{
10141 auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
10142 return manage(res);
10143}
10144
10145multi_pw_aff multi_pw_aff::from_range() const
10146{
10147 auto res = isl_multi_pw_aff_from_range(copy());
10148 return manage(res);
10149}
10150
10151id multi_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
10152{
10153 auto res = isl_multi_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
10154 return manage(res);
10155}
10156
10157space multi_pw_aff::get_domain_space() const
10158{
10159 auto res = isl_multi_pw_aff_get_domain_space(get());
10160 return manage(res);
10161}
10162
10163uint32_t multi_pw_aff::get_hash() const
10164{
10165 auto res = isl_multi_pw_aff_get_hash(get());
10166 return res;
10167}
10168
10169pw_aff multi_pw_aff::get_pw_aff(int pos) const
10170{
10171 auto res = isl_multi_pw_aff_get_pw_aff(get(), pos);
10172 return manage(res);
10173}
10174
10175space multi_pw_aff::get_space() const
10176{
10177 auto res = isl_multi_pw_aff_get_space(get());
10178 return manage(res);
10179}
10180
10181id multi_pw_aff::get_tuple_id(isl::dim type) const
10182{
10183 auto res = isl_multi_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10184 return manage(res);
10185}
10186
10187std::string multi_pw_aff::get_tuple_name(isl::dim type) const
10188{
10189 auto res = isl_multi_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10190 std::string tmp(res);
10191 return tmp;
10192}
10193
10194multi_pw_aff multi_pw_aff::gist(set set) const
10195{
10196 auto res = isl_multi_pw_aff_gist(copy(), set.release());
10197 return manage(res);
10198}
10199
10200multi_pw_aff multi_pw_aff::gist_params(set set) const
10201{
10202 auto res = isl_multi_pw_aff_gist_params(copy(), set.release());
10203 return manage(res);
10204}
10205
10206boolean multi_pw_aff::has_tuple_id(isl::dim type) const
10207{
10208 auto res = isl_multi_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10209 return manage(res);
10210}
10211
10212multi_pw_aff multi_pw_aff::identity(space space)
10213{
10214 auto res = isl_multi_pw_aff_identity(space.release());
10215 return manage(res);
10216}
10217
10218multi_pw_aff multi_pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
10219{
10220 auto res = isl_multi_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10221 return manage(res);
10222}
10223
10224multi_pw_aff multi_pw_aff::intersect_domain(set domain) const
10225{
10226 auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
10227 return manage(res);
10228}
10229
10230multi_pw_aff multi_pw_aff::intersect_params(set set) const
10231{
10232 auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
10233 return manage(res);
10234}
10235
10236boolean multi_pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
10237{
10238 auto res = isl_multi_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
10239 return manage(res);
10240}
10241
10242boolean multi_pw_aff::involves_nan() const
10243{
10244 auto res = isl_multi_pw_aff_involves_nan(get());
10245 return manage(res);
10246}
10247
10248boolean multi_pw_aff::is_cst() const
10249{
10250 auto res = isl_multi_pw_aff_is_cst(get());
10251 return manage(res);
10252}
10253
10254boolean multi_pw_aff::is_equal(const multi_pw_aff &mpa2) const
10255{
10256 auto res = isl_multi_pw_aff_is_equal(get(), mpa2.get());
10257 return manage(res);
10258}
10259
10260map multi_pw_aff::lex_gt_map(multi_pw_aff mpa2) const
10261{
10262 auto res = isl_multi_pw_aff_lex_gt_map(copy(), mpa2.release());
10263 return manage(res);
10264}
10265
10266map multi_pw_aff::lex_lt_map(multi_pw_aff mpa2) const
10267{
10268 auto res = isl_multi_pw_aff_lex_lt_map(copy(), mpa2.release());
10269 return manage(res);
10270}
10271
10272multi_pw_aff multi_pw_aff::mod_multi_val(multi_val mv) const
10273{
10274 auto res = isl_multi_pw_aff_mod_multi_val(copy(), mv.release());
10275 return manage(res);
10276}
10277
10278multi_pw_aff multi_pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
10279{
10280 auto res = isl_multi_pw_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
10281 return manage(res);
10282}
10283
10284multi_pw_aff multi_pw_aff::neg() const
10285{
10286 auto res = isl_multi_pw_aff_neg(copy());
10287 return manage(res);
10288}
10289
10290boolean multi_pw_aff::plain_is_equal(const multi_pw_aff &multi2) const
10291{
10292 auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
10293 return manage(res);
10294}
10295
10296multi_pw_aff multi_pw_aff::product(multi_pw_aff multi2) const
10297{
10298 auto res = isl_multi_pw_aff_product(copy(), multi2.release());
10299 return manage(res);
10300}
10301
10302multi_pw_aff multi_pw_aff::project_domain_on_params() const
10303{
10304 auto res = isl_multi_pw_aff_project_domain_on_params(copy());
10305 return manage(res);
10306}
10307
10308multi_pw_aff multi_pw_aff::pullback(multi_aff ma) const
10309{
10310 auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
10311 return manage(res);
10312}
10313
10314multi_pw_aff multi_pw_aff::pullback(pw_multi_aff pma) const
10315{
10316 auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
10317 return manage(res);
10318}
10319
10320multi_pw_aff multi_pw_aff::pullback(multi_pw_aff mpa2) const
10321{
10322 auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
10323 return manage(res);
10324}
10325
10326multi_pw_aff multi_pw_aff::range_factor_domain() const
10327{
10328 auto res = isl_multi_pw_aff_range_factor_domain(copy());
10329 return manage(res);
10330}
10331
10332multi_pw_aff multi_pw_aff::range_factor_range() const
10333{
10334 auto res = isl_multi_pw_aff_range_factor_range(copy());
10335 return manage(res);
10336}
10337
10338boolean multi_pw_aff::range_is_wrapping() const
10339{
10340 auto res = isl_multi_pw_aff_range_is_wrapping(get());
10341 return manage(res);
10342}
10343
10344multi_pw_aff multi_pw_aff::range_product(multi_pw_aff multi2) const
10345{
10346 auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
10347 return manage(res);
10348}
10349
10350multi_pw_aff multi_pw_aff::range_splice(unsigned int pos, multi_pw_aff multi2) const
10351{
10352 auto res = isl_multi_pw_aff_range_splice(copy(), pos, multi2.release());
10353 return manage(res);
10354}
10355
10356multi_pw_aff multi_pw_aff::reset_tuple_id(isl::dim type) const
10357{
10358 auto res = isl_multi_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
10359 return manage(res);
10360}
10361
10362multi_pw_aff multi_pw_aff::reset_user() const
10363{
10364 auto res = isl_multi_pw_aff_reset_user(copy());
10365 return manage(res);
10366}
10367
10368multi_pw_aff multi_pw_aff::scale_down_multi_val(multi_val mv) const
10369{
10370 auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
10371 return manage(res);
10372}
10373
10374multi_pw_aff multi_pw_aff::scale_down_val(val v) const
10375{
10376 auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
10377 return manage(res);
10378}
10379
10380multi_pw_aff multi_pw_aff::scale_multi_val(multi_val mv) const
10381{
10382 auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
10383 return manage(res);
10384}
10385
10386multi_pw_aff multi_pw_aff::scale_val(val v) const
10387{
10388 auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
10389 return manage(res);
10390}
10391
10392multi_pw_aff multi_pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
10393{
10394 auto res = isl_multi_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
10395 return manage(res);
10396}
10397
10398multi_pw_aff multi_pw_aff::set_pw_aff(int pos, pw_aff el) const
10399{
10400 auto res = isl_multi_pw_aff_set_pw_aff(copy(), pos, el.release());
10401 return manage(res);
10402}
10403
10404multi_pw_aff multi_pw_aff::set_tuple_id(isl::dim type, id id) const
10405{
10406 auto res = isl_multi_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
10407 return manage(res);
10408}
10409
10410multi_pw_aff multi_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const
10411{
10412 auto res = isl_multi_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
10413 return manage(res);
10414}
10415
10416multi_pw_aff multi_pw_aff::splice(unsigned int in_pos, unsigned int out_pos, multi_pw_aff multi2) const
10417{
10418 auto res = isl_multi_pw_aff_splice(copy(), in_pos, out_pos, multi2.release());
10419 return manage(res);
10420}
10421
10422multi_pw_aff multi_pw_aff::sub(multi_pw_aff multi2) const
10423{
10424 auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
10425 return manage(res);
10426}
10427
10428multi_pw_aff multi_pw_aff::zero(space space)
10429{
10430 auto res = isl_multi_pw_aff_zero(space.release());
10431 return manage(res);
10432}
10433
10434// implementations for isl::multi_union_pw_aff
10435multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
10436 return multi_union_pw_aff(ptr);
10437}
10438multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
10439 ptr = isl_multi_union_pw_aff_copy(ptr);
10440 return multi_union_pw_aff(ptr);
10441}
10442
10443multi_union_pw_aff::multi_union_pw_aff()
10444 : ptr(nullptr) {}
10445
10446multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
10447 : ptr(nullptr)
10448{
10449 ptr = obj.copy();
10450}
10451multi_union_pw_aff::multi_union_pw_aff(std::nullptr_t)
10452 : ptr(nullptr) {}
10453
10454
10455multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
10456 : ptr(ptr) {}
10457
10458multi_union_pw_aff::multi_union_pw_aff(union_pw_aff upa)
10459{
10460 auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
10461 ptr = res;
10462}
10463multi_union_pw_aff::multi_union_pw_aff(multi_pw_aff mpa)
10464{
10465 auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
10466 ptr = res;
10467}
10468multi_union_pw_aff::multi_union_pw_aff(union_pw_multi_aff upma)
10469{
10470 auto res = isl_multi_union_pw_aff_from_union_pw_multi_aff(upma.release());
10471 ptr = res;
10472}
10473multi_union_pw_aff::multi_union_pw_aff(ctx ctx, const std::string &str)
10474{
10475 auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
10476 ptr = res;
10477}
10478
10479multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
10480 std::swap(this->ptr, obj.ptr);
10481 return *this;
10482}
10483
10484multi_union_pw_aff::~multi_union_pw_aff() {
10485 if (ptr)
10486 isl_multi_union_pw_aff_free(ptr);
10487}
10488
10489__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
10490 return isl_multi_union_pw_aff_copy(ptr);
10491}
10492
10493__isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
10494 return ptr;
10495}
10496
10497__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
10498 isl_multi_union_pw_aff *tmp = ptr;
10499 ptr = nullptr;
10500 return tmp;
10501}
10502
10503bool multi_union_pw_aff::is_null() const {
10504 return ptr == nullptr;
10505}
10506multi_union_pw_aff::operator bool() const {
10507 return !is_null();
10508}
10509
10510
10511ctx multi_union_pw_aff::get_ctx() const {
10512 return ctx(isl_multi_union_pw_aff_get_ctx(ptr));
10513}
10514std::string multi_union_pw_aff::to_str() const {
10515 char *Tmp = isl_multi_union_pw_aff_to_str(get());
10516 if (!Tmp)
10517 return "";
10518 std::string S(Tmp);
10519 free(Tmp);
10520 return S;
10521}
10522
10523
10524void multi_union_pw_aff::dump() const {
10525 isl_multi_union_pw_aff_dump(get());
10526}
10527
10528
10529multi_union_pw_aff multi_union_pw_aff::add(multi_union_pw_aff multi2) const
10530{
10531 auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
10532 return manage(res);
10533}
10534
10535multi_union_pw_aff multi_union_pw_aff::align_params(space model) const
10536{
10537 auto res = isl_multi_union_pw_aff_align_params(copy(), model.release());
10538 return manage(res);
10539}
10540
10541union_pw_aff multi_union_pw_aff::apply_aff(aff aff) const
10542{
10543 auto res = isl_multi_union_pw_aff_apply_aff(copy(), aff.release());
10544 return manage(res);
10545}
10546
10547union_pw_aff multi_union_pw_aff::apply_pw_aff(pw_aff pa) const
10548{
10549 auto res = isl_multi_union_pw_aff_apply_pw_aff(copy(), pa.release());
10550 return manage(res);
10551}
10552
10553multi_union_pw_aff multi_union_pw_aff::apply_pw_multi_aff(pw_multi_aff pma) const
10554{
10555 auto res = isl_multi_union_pw_aff_apply_pw_multi_aff(copy(), pma.release());
10556 return manage(res);
10557}
10558
10559multi_union_pw_aff multi_union_pw_aff::coalesce() const
10560{
10561 auto res = isl_multi_union_pw_aff_coalesce(copy());
10562 return manage(res);
10563}
10564
10565unsigned int multi_union_pw_aff::dim(isl::dim type) const
10566{
10567 auto res = isl_multi_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
10568 return res;
10569}
10570
10571union_set multi_union_pw_aff::domain() const
10572{
10573 auto res = isl_multi_union_pw_aff_domain(copy());
10574 return manage(res);
10575}
10576
10577multi_union_pw_aff multi_union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
10578{
10579 auto res = isl_multi_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10580 return manage(res);
10581}
10582
10583multi_pw_aff multi_union_pw_aff::extract_multi_pw_aff(space space) const
10584{
10585 auto res = isl_multi_union_pw_aff_extract_multi_pw_aff(get(), space.release());
10586 return manage(res);
10587}
10588
10589multi_union_pw_aff multi_union_pw_aff::factor_range() const
10590{
10591 auto res = isl_multi_union_pw_aff_factor_range(copy());
10592 return manage(res);
10593}
10594
10595int multi_union_pw_aff::find_dim_by_id(isl::dim type, const id &id) const
10596{
10597 auto res = isl_multi_union_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
10598 return res;
10599}
10600
10601int multi_union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
10602{
10603 auto res = isl_multi_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
10604 return res;
10605}
10606
10607multi_union_pw_aff multi_union_pw_aff::flat_range_product(multi_union_pw_aff multi2) const
10608{
10609 auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
10610 return manage(res);
10611}
10612
10613multi_union_pw_aff multi_union_pw_aff::flatten_range() const
10614{
10615 auto res = isl_multi_union_pw_aff_flatten_range(copy());
10616 return manage(res);
10617}
10618
10619multi_union_pw_aff multi_union_pw_aff::floor() const
10620{
10621 auto res = isl_multi_union_pw_aff_floor(copy());
10622 return manage(res);
10623}
10624
10625multi_union_pw_aff multi_union_pw_aff::from_multi_aff(multi_aff ma)
10626{
10627 auto res = isl_multi_union_pw_aff_from_multi_aff(ma.release());
10628 return manage(res);
10629}
10630
10631multi_union_pw_aff multi_union_pw_aff::from_range() const
10632{
10633 auto res = isl_multi_union_pw_aff_from_range(copy());
10634 return manage(res);
10635}
10636
10637multi_union_pw_aff multi_union_pw_aff::from_union_map(union_map umap)
10638{
10639 auto res = isl_multi_union_pw_aff_from_union_map(umap.release());
10640 return manage(res);
10641}
10642
10643multi_union_pw_aff multi_union_pw_aff::from_union_pw_aff_list(space space, union_pw_aff_list list)
10644{
10645 auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
10646 return manage(res);
10647}
10648
10649id multi_union_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
10650{
10651 auto res = isl_multi_union_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
10652 return manage(res);
10653}
10654
10655space multi_union_pw_aff::get_domain_space() const
10656{
10657 auto res = isl_multi_union_pw_aff_get_domain_space(get());
10658 return manage(res);
10659}
10660
10661space multi_union_pw_aff::get_space() const
10662{
10663 auto res = isl_multi_union_pw_aff_get_space(get());
10664 return manage(res);
10665}
10666
10667id multi_union_pw_aff::get_tuple_id(isl::dim type) const
10668{
10669 auto res = isl_multi_union_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10670 return manage(res);
10671}
10672
10673std::string multi_union_pw_aff::get_tuple_name(isl::dim type) const
10674{
10675 auto res = isl_multi_union_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10676 std::string tmp(res);
10677 return tmp;
10678}
10679
10680union_pw_aff multi_union_pw_aff::get_union_pw_aff(int pos) const
10681{
10682 auto res = isl_multi_union_pw_aff_get_union_pw_aff(get(), pos);
10683 return manage(res);
10684}
10685
10686multi_union_pw_aff multi_union_pw_aff::gist(union_set context) const
10687{
10688 auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
10689 return manage(res);
10690}
10691
10692multi_union_pw_aff multi_union_pw_aff::gist_params(set context) const
10693{
10694 auto res = isl_multi_union_pw_aff_gist_params(copy(), context.release());
10695 return manage(res);
10696}
10697
10698boolean multi_union_pw_aff::has_tuple_id(isl::dim type) const
10699{
10700 auto res = isl_multi_union_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10701 return manage(res);
10702}
10703
10704multi_union_pw_aff multi_union_pw_aff::intersect_domain(union_set uset) const
10705{
10706 auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
10707 return manage(res);
10708}
10709
10710multi_union_pw_aff multi_union_pw_aff::intersect_params(set params) const
10711{
10712 auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
10713 return manage(res);
10714}
10715
10716multi_union_pw_aff multi_union_pw_aff::intersect_range(set set) const
10717{
10718 auto res = isl_multi_union_pw_aff_intersect_range(copy(), set.release());
10719 return manage(res);
10720}
10721
10722boolean multi_union_pw_aff::involves_nan() const
10723{
10724 auto res = isl_multi_union_pw_aff_involves_nan(get());
10725 return manage(res);
10726}
10727
10728multi_val multi_union_pw_aff::max_multi_val() const
10729{
10730 auto res = isl_multi_union_pw_aff_max_multi_val(copy());
10731 return manage(res);
10732}
10733
10734multi_val multi_union_pw_aff::min_multi_val() const
10735{
10736 auto res = isl_multi_union_pw_aff_min_multi_val(copy());
10737 return manage(res);
10738}
10739
10740multi_union_pw_aff multi_union_pw_aff::mod_multi_val(multi_val mv) const
10741{
10742 auto res = isl_multi_union_pw_aff_mod_multi_val(copy(), mv.release());
10743 return manage(res);
10744}
10745
10746multi_union_pw_aff multi_union_pw_aff::multi_aff_on_domain(union_set domain, multi_aff ma)
10747{
10748 auto res = isl_multi_union_pw_aff_multi_aff_on_domain(domain.release(), ma.release());
10749 return manage(res);
10750}
10751
10752multi_union_pw_aff multi_union_pw_aff::multi_val_on_domain(union_set domain, multi_val mv)
10753{
10754 auto res = isl_multi_union_pw_aff_multi_val_on_domain(domain.release(), mv.release());
10755 return manage(res);
10756}
10757
10758multi_union_pw_aff multi_union_pw_aff::neg() const
10759{
10760 auto res = isl_multi_union_pw_aff_neg(copy());
10761 return manage(res);
10762}
10763
10764boolean multi_union_pw_aff::plain_is_equal(const multi_union_pw_aff &multi2) const
10765{
10766 auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
10767 return manage(res);
10768}
10769
10770multi_union_pw_aff multi_union_pw_aff::pullback(union_pw_multi_aff upma) const
10771{
10772 auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
10773 return manage(res);
10774}
10775
10776multi_union_pw_aff multi_union_pw_aff::pw_multi_aff_on_domain(union_set domain, pw_multi_aff pma)
10777{
10778 auto res = isl_multi_union_pw_aff_pw_multi_aff_on_domain(domain.release(), pma.release());
10779 return manage(res);
10780}
10781
10782multi_union_pw_aff multi_union_pw_aff::range_factor_domain() const
10783{
10784 auto res = isl_multi_union_pw_aff_range_factor_domain(copy());
10785 return manage(res);
10786}
10787
10788multi_union_pw_aff multi_union_pw_aff::range_factor_range() const
10789{
10790 auto res = isl_multi_union_pw_aff_range_factor_range(copy());
10791 return manage(res);
10792}
10793
10794boolean multi_union_pw_aff::range_is_wrapping() const
10795{
10796 auto res = isl_multi_union_pw_aff_range_is_wrapping(get());
10797 return manage(res);
10798}
10799
10800multi_union_pw_aff multi_union_pw_aff::range_product(multi_union_pw_aff multi2) const
10801{
10802 auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
10803 return manage(res);
10804}
10805
10806multi_union_pw_aff multi_union_pw_aff::range_splice(unsigned int pos, multi_union_pw_aff multi2) const
10807{
10808 auto res = isl_multi_union_pw_aff_range_splice(copy(), pos, multi2.release());
10809 return manage(res);
10810}
10811
10812multi_union_pw_aff multi_union_pw_aff::reset_tuple_id(isl::dim type) const
10813{
10814 auto res = isl_multi_union_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
10815 return manage(res);
10816}
10817
10818multi_union_pw_aff multi_union_pw_aff::reset_user() const
10819{
10820 auto res = isl_multi_union_pw_aff_reset_user(copy());
10821 return manage(res);
10822}
10823
10824multi_union_pw_aff multi_union_pw_aff::scale_down_multi_val(multi_val mv) const
10825{
10826 auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
10827 return manage(res);
10828}
10829
10830multi_union_pw_aff multi_union_pw_aff::scale_down_val(val v) const
10831{
10832 auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
10833 return manage(res);
10834}
10835
10836multi_union_pw_aff multi_union_pw_aff::scale_multi_val(multi_val mv) const
10837{
10838 auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
10839 return manage(res);
10840}
10841
10842multi_union_pw_aff multi_union_pw_aff::scale_val(val v) const
10843{
10844 auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
10845 return manage(res);
10846}
10847
10848multi_union_pw_aff multi_union_pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
10849{
10850 auto res = isl_multi_union_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
10851 return manage(res);
10852}
10853
10854multi_union_pw_aff multi_union_pw_aff::set_tuple_id(isl::dim type, id id) const
10855{
10856 auto res = isl_multi_union_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
10857 return manage(res);
10858}
10859
10860multi_union_pw_aff multi_union_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const
10861{
10862 auto res = isl_multi_union_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
10863 return manage(res);
10864}
10865
10866multi_union_pw_aff multi_union_pw_aff::set_union_pw_aff(int pos, union_pw_aff el) const
10867{
10868 auto res = isl_multi_union_pw_aff_set_union_pw_aff(copy(), pos, el.release());
10869 return manage(res);
10870}
10871
10872multi_union_pw_aff multi_union_pw_aff::sub(multi_union_pw_aff multi2) const
10873{
10874 auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
10875 return manage(res);
10876}
10877
10878multi_union_pw_aff multi_union_pw_aff::union_add(multi_union_pw_aff mupa2) const
10879{
10880 auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
10881 return manage(res);
10882}
10883
10884multi_union_pw_aff multi_union_pw_aff::zero(space space)
10885{
10886 auto res = isl_multi_union_pw_aff_zero(space.release());
10887 return manage(res);
10888}
10889
10890union_set multi_union_pw_aff::zero_union_set() const
10891{
10892 auto res = isl_multi_union_pw_aff_zero_union_set(copy());
10893 return manage(res);
10894}
10895
10896// implementations for isl::multi_val
10897multi_val manage(__isl_take isl_multi_val *ptr) {
10898 return multi_val(ptr);
10899}
10900multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
10901 ptr = isl_multi_val_copy(ptr);
10902 return multi_val(ptr);
10903}
10904
10905multi_val::multi_val()
10906 : ptr(nullptr) {}
10907
10908multi_val::multi_val(const multi_val &obj)
10909 : ptr(nullptr)
10910{
10911 ptr = obj.copy();
10912}
10913multi_val::multi_val(std::nullptr_t)
10914 : ptr(nullptr) {}
10915
10916
10917multi_val::multi_val(__isl_take isl_multi_val *ptr)
10918 : ptr(ptr) {}
10919
10920
10921multi_val &multi_val::operator=(multi_val obj) {
10922 std::swap(this->ptr, obj.ptr);
10923 return *this;
10924}
10925
10926multi_val::~multi_val() {
10927 if (ptr)
10928 isl_multi_val_free(ptr);
10929}
10930
10931__isl_give isl_multi_val *multi_val::copy() const & {
10932 return isl_multi_val_copy(ptr);
10933}
10934
10935__isl_keep isl_multi_val *multi_val::get() const {
10936 return ptr;
10937}
10938
10939__isl_give isl_multi_val *multi_val::release() {
10940 isl_multi_val *tmp = ptr;
10941 ptr = nullptr;
10942 return tmp;
10943}
10944
10945bool multi_val::is_null() const {
10946 return ptr == nullptr;
10947}
10948multi_val::operator bool() const {
10949 return !is_null();
10950}
10951
10952
10953ctx multi_val::get_ctx() const {
10954 return ctx(isl_multi_val_get_ctx(ptr));
10955}
10956std::string multi_val::to_str() const {
10957 char *Tmp = isl_multi_val_to_str(get());
10958 if (!Tmp)
10959 return "";
10960 std::string S(Tmp);
10961 free(Tmp);
10962 return S;
10963}
10964
10965
10966void multi_val::dump() const {
10967 isl_multi_val_dump(get());
10968}
10969
10970
10971multi_val multi_val::add(multi_val multi2) const
10972{
10973 auto res = isl_multi_val_add(copy(), multi2.release());
10974 return manage(res);
10975}
10976
10977multi_val multi_val::add_dims(isl::dim type, unsigned int n) const
10978{
10979 auto res = isl_multi_val_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10980 return manage(res);
10981}
10982
10983multi_val multi_val::add_val(val v) const
10984{
10985 auto res = isl_multi_val_add_val(copy(), v.release());
10986 return manage(res);
10987}
10988
10989multi_val multi_val::align_params(space model) const
10990{
10991 auto res = isl_multi_val_align_params(copy(), model.release());
10992 return manage(res);
10993}
10994
10995unsigned int multi_val::dim(isl::dim type) const
10996{
10997 auto res = isl_multi_val_dim(get(), static_cast<enum isl_dim_type>(type));
10998 return res;
10999}
11000
11001multi_val multi_val::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
11002{
11003 auto res = isl_multi_val_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11004 return manage(res);
11005}
11006
11007multi_val multi_val::factor_range() const
11008{
11009 auto res = isl_multi_val_factor_range(copy());
11010 return manage(res);
11011}
11012
11013int multi_val::find_dim_by_id(isl::dim type, const id &id) const
11014{
11015 auto res = isl_multi_val_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
11016 return res;
11017}
11018
11019int multi_val::find_dim_by_name(isl::dim type, const std::string &name) const
11020{
11021 auto res = isl_multi_val_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
11022 return res;
11023}
11024
11025multi_val multi_val::flat_range_product(multi_val multi2) const
11026{
11027 auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
11028 return manage(res);
11029}
11030
11031multi_val multi_val::flatten_range() const
11032{
11033 auto res = isl_multi_val_flatten_range(copy());
11034 return manage(res);
11035}
11036
11037multi_val multi_val::from_range() const
11038{
11039 auto res = isl_multi_val_from_range(copy());
11040 return manage(res);
11041}
11042
11043multi_val multi_val::from_val_list(space space, val_list list)
11044{
11045 auto res = isl_multi_val_from_val_list(space.release(), list.release());
11046 return manage(res);
11047}
11048
11049id multi_val::get_dim_id(isl::dim type, unsigned int pos) const
11050{
11051 auto res = isl_multi_val_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11052 return manage(res);
11053}
11054
11055space multi_val::get_domain_space() const
11056{
11057 auto res = isl_multi_val_get_domain_space(get());
11058 return manage(res);
11059}
11060
11061space multi_val::get_space() const
11062{
11063 auto res = isl_multi_val_get_space(get());
11064 return manage(res);
11065}
11066
11067id multi_val::get_tuple_id(isl::dim type) const
11068{
11069 auto res = isl_multi_val_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11070 return manage(res);
11071}
11072
11073std::string multi_val::get_tuple_name(isl::dim type) const
11074{
11075 auto res = isl_multi_val_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
11076 std::string tmp(res);
11077 return tmp;
11078}
11079
11080val multi_val::get_val(int pos) const
11081{
11082 auto res = isl_multi_val_get_val(get(), pos);
11083 return manage(res);
11084}
11085
11086boolean multi_val::has_tuple_id(isl::dim type) const
11087{
11088 auto res = isl_multi_val_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11089 return manage(res);
11090}
11091
11092multi_val multi_val::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
11093{
11094 auto res = isl_multi_val_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11095 return manage(res);
11096}
11097
11098boolean multi_val::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11099{
11100 auto res = isl_multi_val_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
11101 return manage(res);
11102}
11103
11104boolean multi_val::involves_nan() const
11105{
11106 auto res = isl_multi_val_involves_nan(get());
11107 return manage(res);
11108}
11109
11110multi_val multi_val::mod_multi_val(multi_val mv) const
11111{
11112 auto res = isl_multi_val_mod_multi_val(copy(), mv.release());
11113 return manage(res);
11114}
11115
11116multi_val multi_val::mod_val(val v) const
11117{
11118 auto res = isl_multi_val_mod_val(copy(), v.release());
11119 return manage(res);
11120}
11121
11122multi_val multi_val::neg() const
11123{
11124 auto res = isl_multi_val_neg(copy());
11125 return manage(res);
11126}
11127
11128boolean multi_val::plain_is_equal(const multi_val &multi2) const
11129{
11130 auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
11131 return manage(res);
11132}
11133
11134multi_val multi_val::product(multi_val multi2) const
11135{
11136 auto res = isl_multi_val_product(copy(), multi2.release());
11137 return manage(res);
11138}
11139
11140multi_val multi_val::project_domain_on_params() const
11141{
11142 auto res = isl_multi_val_project_domain_on_params(copy());
11143 return manage(res);
11144}
11145
11146multi_val multi_val::range_factor_domain() const
11147{
11148 auto res = isl_multi_val_range_factor_domain(copy());
11149 return manage(res);
11150}
11151
11152multi_val multi_val::range_factor_range() const
11153{
11154 auto res = isl_multi_val_range_factor_range(copy());
11155 return manage(res);
11156}
11157
11158boolean multi_val::range_is_wrapping() const
11159{
11160 auto res = isl_multi_val_range_is_wrapping(get());
11161 return manage(res);
11162}
11163
11164multi_val multi_val::range_product(multi_val multi2) const
11165{
11166 auto res = isl_multi_val_range_product(copy(), multi2.release());
11167 return manage(res);
11168}
11169
11170multi_val multi_val::range_splice(unsigned int pos, multi_val multi2) const
11171{
11172 auto res = isl_multi_val_range_splice(copy(), pos, multi2.release());
11173 return manage(res);
11174}
11175
11176multi_val multi_val::read_from_str(ctx ctx, const std::string &str)
11177{
11178 auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
11179 return manage(res);
11180}
11181
11182multi_val multi_val::reset_tuple_id(isl::dim type) const
11183{
11184 auto res = isl_multi_val_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
11185 return manage(res);
11186}
11187
11188multi_val multi_val::reset_user() const
11189{
11190 auto res = isl_multi_val_reset_user(copy());
11191 return manage(res);
11192}
11193
11194multi_val multi_val::scale_down_multi_val(multi_val mv) const
11195{
11196 auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
11197 return manage(res);
11198}
11199
11200multi_val multi_val::scale_down_val(val v) const
11201{
11202 auto res = isl_multi_val_scale_down_val(copy(), v.release());
11203 return manage(res);
11204}
11205
11206multi_val multi_val::scale_multi_val(multi_val mv) const
11207{
11208 auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
11209 return manage(res);
11210}
11211
11212multi_val multi_val::scale_val(val v) const
11213{
11214 auto res = isl_multi_val_scale_val(copy(), v.release());
11215 return manage(res);
11216}
11217
11218multi_val multi_val::set_dim_id(isl::dim type, unsigned int pos, id id) const
11219{
11220 auto res = isl_multi_val_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
11221 return manage(res);
11222}
11223
11224multi_val multi_val::set_tuple_id(isl::dim type, id id) const
11225{
11226 auto res = isl_multi_val_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11227 return manage(res);
11228}
11229
11230multi_val multi_val::set_tuple_name(isl::dim type, const std::string &s) const
11231{
11232 auto res = isl_multi_val_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
11233 return manage(res);
11234}
11235
11236multi_val multi_val::set_val(int pos, val el) const
11237{
11238 auto res = isl_multi_val_set_val(copy(), pos, el.release());
11239 return manage(res);
11240}
11241
11242multi_val multi_val::splice(unsigned int in_pos, unsigned int out_pos, multi_val multi2) const
11243{
11244 auto res = isl_multi_val_splice(copy(), in_pos, out_pos, multi2.release());
11245 return manage(res);
11246}
11247
11248multi_val multi_val::sub(multi_val multi2) const
11249{
11250 auto res = isl_multi_val_sub(copy(), multi2.release());
11251 return manage(res);
11252}
11253
11254multi_val multi_val::zero(space space)
11255{
11256 auto res = isl_multi_val_zero(space.release());
11257 return manage(res);
11258}
11259
11260// implementations for isl::point
11261point manage(__isl_take isl_point *ptr) {
11262 return point(ptr);
11263}
11264point manage_copy(__isl_keep isl_point *ptr) {
11265 ptr = isl_point_copy(ptr);
11266 return point(ptr);
11267}
11268
11269point::point()
11270 : ptr(nullptr) {}
11271
11272point::point(const point &obj)
11273 : ptr(nullptr)
11274{
11275 ptr = obj.copy();
11276}
11277point::point(std::nullptr_t)
11278 : ptr(nullptr) {}
11279
11280
11281point::point(__isl_take isl_point *ptr)
11282 : ptr(ptr) {}
11283
11284point::point(space dim)
11285{
11286 auto res = isl_point_zero(dim.release());
11287 ptr = res;
11288}
11289
11290point &point::operator=(point obj) {
11291 std::swap(this->ptr, obj.ptr);
11292 return *this;
11293}
11294
11295point::~point() {
11296 if (ptr)
11297 isl_point_free(ptr);
11298}
11299
11300__isl_give isl_point *point::copy() const & {
11301 return isl_point_copy(ptr);
11302}
11303
11304__isl_keep isl_point *point::get() const {
11305 return ptr;
11306}
11307
11308__isl_give isl_point *point::release() {
11309 isl_point *tmp = ptr;
11310 ptr = nullptr;
11311 return tmp;
11312}
11313
11314bool point::is_null() const {
11315 return ptr == nullptr;
11316}
11317point::operator bool() const {
11318 return !is_null();
11319}
11320
11321
11322ctx point::get_ctx() const {
11323 return ctx(isl_point_get_ctx(ptr));
11324}
11325std::string point::to_str() const {
11326 char *Tmp = isl_point_to_str(get());
11327 if (!Tmp)
11328 return "";
11329 std::string S(Tmp);
11330 free(Tmp);
11331 return S;
11332}
11333
11334
11335void point::dump() const {
11336 isl_point_dump(get());
11337}
11338
11339
11340point point::add_ui(isl::dim type, int pos, unsigned int val) const
11341{
11342 auto res = isl_point_add_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
11343 return manage(res);
11344}
11345
11346val point::get_coordinate_val(isl::dim type, int pos) const
11347{
11348 auto res = isl_point_get_coordinate_val(get(), static_cast<enum isl_dim_type>(type), pos);
11349 return manage(res);
11350}
11351
11352space point::get_space() const
11353{
11354 auto res = isl_point_get_space(get());
11355 return manage(res);
11356}
11357
11358point point::set_coordinate_val(isl::dim type, int pos, val v) const
11359{
11360 auto res = isl_point_set_coordinate_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
11361 return manage(res);
11362}
11363
11364point point::sub_ui(isl::dim type, int pos, unsigned int val) const
11365{
11366 auto res = isl_point_sub_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
11367 return manage(res);
11368}
11369
11370// implementations for isl::pw_aff
11371pw_aff manage(__isl_take isl_pw_aff *ptr) {
11372 return pw_aff(ptr);
11373}
11374pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
11375 ptr = isl_pw_aff_copy(ptr);
11376 return pw_aff(ptr);
11377}
11378
11379pw_aff::pw_aff()
11380 : ptr(nullptr) {}
11381
11382pw_aff::pw_aff(const pw_aff &obj)
11383 : ptr(nullptr)
11384{
11385 ptr = obj.copy();
11386}
11387pw_aff::pw_aff(std::nullptr_t)
11388 : ptr(nullptr) {}
11389
11390
11391pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
11392 : ptr(ptr) {}
11393
11394pw_aff::pw_aff(aff aff)
11395{
11396 auto res = isl_pw_aff_from_aff(aff.release());
11397 ptr = res;
11398}
11399pw_aff::pw_aff(local_space ls)
11400{
11401 auto res = isl_pw_aff_zero_on_domain(ls.release());
11402 ptr = res;
11403}
11404pw_aff::pw_aff(set domain, val v)
11405{
11406 auto res = isl_pw_aff_val_on_domain(domain.release(), v.release());
11407 ptr = res;
11408}
11409pw_aff::pw_aff(ctx ctx, const std::string &str)
11410{
11411 auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
11412 ptr = res;
11413}
11414
11415pw_aff &pw_aff::operator=(pw_aff obj) {
11416 std::swap(this->ptr, obj.ptr);
11417 return *this;
11418}
11419
11420pw_aff::~pw_aff() {
11421 if (ptr)
11422 isl_pw_aff_free(ptr);
11423}
11424
11425__isl_give isl_pw_aff *pw_aff::copy() const & {
11426 return isl_pw_aff_copy(ptr);
11427}
11428
11429__isl_keep isl_pw_aff *pw_aff::get() const {
11430 return ptr;
11431}
11432
11433__isl_give isl_pw_aff *pw_aff::release() {
11434 isl_pw_aff *tmp = ptr;
11435 ptr = nullptr;
11436 return tmp;
11437}
11438
11439bool pw_aff::is_null() const {
11440 return ptr == nullptr;
11441}
11442pw_aff::operator bool() const {
11443 return !is_null();
11444}
11445
11446
11447ctx pw_aff::get_ctx() const {
11448 return ctx(isl_pw_aff_get_ctx(ptr));
11449}
11450std::string pw_aff::to_str() const {
11451 char *Tmp = isl_pw_aff_to_str(get());
11452 if (!Tmp)
11453 return "";
11454 std::string S(Tmp);
11455 free(Tmp);
11456 return S;
11457}
11458
11459
11460void pw_aff::dump() const {
11461 isl_pw_aff_dump(get());
11462}
11463
11464
11465pw_aff pw_aff::add(pw_aff pwaff2) const
11466{
11467 auto res = isl_pw_aff_add(copy(), pwaff2.release());
11468 return manage(res);
11469}
11470
11471pw_aff pw_aff::add_dims(isl::dim type, unsigned int n) const
11472{
11473 auto res = isl_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
11474 return manage(res);
11475}
11476
11477pw_aff pw_aff::align_params(space model) const
11478{
11479 auto res = isl_pw_aff_align_params(copy(), model.release());
11480 return manage(res);
11481}
11482
11483pw_aff pw_aff::alloc(set set, aff aff)
11484{
11485 auto res = isl_pw_aff_alloc(set.release(), aff.release());
11486 return manage(res);
11487}
11488
11489pw_aff pw_aff::ceil() const
11490{
11491 auto res = isl_pw_aff_ceil(copy());
11492 return manage(res);
11493}
11494
11495pw_aff pw_aff::coalesce() const
11496{
11497 auto res = isl_pw_aff_coalesce(copy());
11498 return manage(res);
11499}
11500
11501pw_aff pw_aff::cond(pw_aff pwaff_true, pw_aff pwaff_false) const
11502{
11503 auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
11504 return manage(res);
11505}
11506
11507unsigned int pw_aff::dim(isl::dim type) const
11508{
11509 auto res = isl_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
11510 return res;
11511}
11512
11513pw_aff pw_aff::div(pw_aff pa2) const
11514{
11515 auto res = isl_pw_aff_div(copy(), pa2.release());
11516 return manage(res);
11517}
11518
11519set pw_aff::domain() const
11520{
11521 auto res = isl_pw_aff_domain(copy());
11522 return manage(res);
11523}
11524
11525pw_aff pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
11526{
11527 auto res = isl_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11528 return manage(res);
11529}
11530
11531pw_aff pw_aff::drop_unused_params() const
11532{
11533 auto res = isl_pw_aff_drop_unused_params(copy());
11534 return manage(res);
11535}
11536
11537pw_aff pw_aff::empty(space dim)
11538{
11539 auto res = isl_pw_aff_empty(dim.release());
11540 return manage(res);
11541}
11542
11543map pw_aff::eq_map(pw_aff pa2) const
11544{
11545 auto res = isl_pw_aff_eq_map(copy(), pa2.release());
11546 return manage(res);
11547}
11548
11549set pw_aff::eq_set(pw_aff pwaff2) const
11550{
11551 auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
11552 return manage(res);
11553}
11554
11555val pw_aff::eval(point pnt) const
11556{
11557 auto res = isl_pw_aff_eval(copy(), pnt.release());
11558 return manage(res);
11559}
11560
11561int pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
11562{
11563 auto res = isl_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
11564 return res;
11565}
11566
11567pw_aff pw_aff::floor() const
11568{
11569 auto res = isl_pw_aff_floor(copy());
11570 return manage(res);
11571}
11572
11573stat pw_aff::foreach_piece(const std::function<stat(set, aff)> &fn) const
11574{
11575 struct fn_data {
11576 const std::function<stat(set, aff)> *func;
11577 } fn_data = { &fn };
11578 auto fn_lambda = [](isl_set *arg_0, isl_aff *arg_1, void *arg_2) -> isl_stat {
11579 auto *data = static_cast<struct fn_data *>(arg_2);
11580 stat ret = (*data->func)(manage(arg_0), manage(arg_1));
11581 return ret.release();
11582 };
11583 auto res = isl_pw_aff_foreach_piece(get(), fn_lambda, &fn_data);
11584 return manage(res);
11585}
11586
11587pw_aff pw_aff::from_range() const
11588{
11589 auto res = isl_pw_aff_from_range(copy());
11590 return manage(res);
11591}
11592
11593set pw_aff::ge_set(pw_aff pwaff2) const
11594{
11595 auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
11596 return manage(res);
11597}
11598
11599id pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
11600{
11601 auto res = isl_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11602 return manage(res);
11603}
11604
11605std::string pw_aff::get_dim_name(isl::dim type, unsigned int pos) const
11606{
11607 auto res = isl_pw_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
11608 std::string tmp(res);
11609 return tmp;
11610}
11611
11612space pw_aff::get_domain_space() const
11613{
11614 auto res = isl_pw_aff_get_domain_space(get());
11615 return manage(res);
11616}
11617
11618uint32_t pw_aff::get_hash() const
11619{
11620 auto res = isl_pw_aff_get_hash(get());
11621 return res;
11622}
11623
11624space pw_aff::get_space() const
11625{
11626 auto res = isl_pw_aff_get_space(get());
11627 return manage(res);
11628}
11629
11630id pw_aff::get_tuple_id(isl::dim type) const
11631{
11632 auto res = isl_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11633 return manage(res);
11634}
11635
11636pw_aff pw_aff::gist(set context) const
11637{
11638 auto res = isl_pw_aff_gist(copy(), context.release());
11639 return manage(res);
11640}
11641
11642pw_aff pw_aff::gist_params(set context) const
11643{
11644 auto res = isl_pw_aff_gist_params(copy(), context.release());
11645 return manage(res);
11646}
11647
11648map pw_aff::gt_map(pw_aff pa2) const
11649{
11650 auto res = isl_pw_aff_gt_map(copy(), pa2.release());
11651 return manage(res);
11652}
11653
11654set pw_aff::gt_set(pw_aff pwaff2) const
11655{
11656 auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
11657 return manage(res);
11658}
11659
11660boolean pw_aff::has_dim_id(isl::dim type, unsigned int pos) const
11661{
11662 auto res = isl_pw_aff_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11663 return manage(res);
11664}
11665
11666boolean pw_aff::has_tuple_id(isl::dim type) const
11667{
11668 auto res = isl_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11669 return manage(res);
11670}
11671
11672pw_aff pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
11673{
11674 auto res = isl_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11675 return manage(res);
11676}
11677
11678pw_aff pw_aff::intersect_domain(set set) const
11679{
11680 auto res = isl_pw_aff_intersect_domain(copy(), set.release());
11681 return manage(res);
11682}
11683
11684pw_aff pw_aff::intersect_params(set set) const
11685{
11686 auto res = isl_pw_aff_intersect_params(copy(), set.release());
11687 return manage(res);
11688}
11689
11690boolean pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11691{
11692 auto res = isl_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
11693 return manage(res);
11694}
11695
11696boolean pw_aff::involves_nan() const
11697{
11698 auto res = isl_pw_aff_involves_nan(get());
11699 return manage(res);
11700}
11701
11702boolean pw_aff::is_cst() const
11703{
11704 auto res = isl_pw_aff_is_cst(get());
11705 return manage(res);
11706}
11707
11708boolean pw_aff::is_empty() const
11709{
11710 auto res = isl_pw_aff_is_empty(get());
11711 return manage(res);
11712}
11713
11714boolean pw_aff::is_equal(const pw_aff &pa2) const
11715{
11716 auto res = isl_pw_aff_is_equal(get(), pa2.get());
11717 return manage(res);
11718}
11719
11720set pw_aff::le_set(pw_aff pwaff2) const
11721{
11722 auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
11723 return manage(res);
11724}
11725
11726map pw_aff::lt_map(pw_aff pa2) const
11727{
11728 auto res = isl_pw_aff_lt_map(copy(), pa2.release());
11729 return manage(res);
11730}
11731
11732set pw_aff::lt_set(pw_aff pwaff2) const
11733{
11734 auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
11735 return manage(res);
11736}
11737
11738pw_aff pw_aff::max(pw_aff pwaff2) const
11739{
11740 auto res = isl_pw_aff_max(copy(), pwaff2.release());
11741 return manage(res);
11742}
11743
11744pw_aff pw_aff::min(pw_aff pwaff2) const
11745{
11746 auto res = isl_pw_aff_min(copy(), pwaff2.release());
11747 return manage(res);
11748}
11749
11750pw_aff pw_aff::mod(val mod) const
11751{
11752 auto res = isl_pw_aff_mod_val(copy(), mod.release());
11753 return manage(res);
11754}
11755
11756pw_aff pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
11757{
11758 auto res = isl_pw_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
11759 return manage(res);
11760}
11761
11762pw_aff pw_aff::mul(pw_aff pwaff2) const
11763{
11764 auto res = isl_pw_aff_mul(copy(), pwaff2.release());
11765 return manage(res);
11766}
11767
11768int pw_aff::n_piece() const
11769{
11770 auto res = isl_pw_aff_n_piece(get());
11771 return res;
11772}
11773
11774pw_aff pw_aff::nan_on_domain(local_space ls)
11775{
11776 auto res = isl_pw_aff_nan_on_domain(ls.release());
11777 return manage(res);
11778}
11779
11780set pw_aff::ne_set(pw_aff pwaff2) const
11781{
11782 auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
11783 return manage(res);
11784}
11785
11786pw_aff pw_aff::neg() const
11787{
11788 auto res = isl_pw_aff_neg(copy());
11789 return manage(res);
11790}
11791
11792set pw_aff::non_zero_set() const
11793{
11794 auto res = isl_pw_aff_non_zero_set(copy());
11795 return manage(res);
11796}
11797
11798set pw_aff::nonneg_set() const
11799{
11800 auto res = isl_pw_aff_nonneg_set(copy());
11801 return manage(res);
11802}
11803
11804set pw_aff::params() const
11805{
11806 auto res = isl_pw_aff_params(copy());
11807 return manage(res);
11808}
11809
11810int pw_aff::plain_cmp(const pw_aff &pa2) const
11811{
11812 auto res = isl_pw_aff_plain_cmp(get(), pa2.get());
11813 return res;
11814}
11815
11816boolean pw_aff::plain_is_equal(const pw_aff &pwaff2) const
11817{
11818 auto res = isl_pw_aff_plain_is_equal(get(), pwaff2.get());
11819 return manage(res);
11820}
11821
11822set pw_aff::pos_set() const
11823{
11824 auto res = isl_pw_aff_pos_set(copy());
11825 return manage(res);
11826}
11827
11828pw_aff pw_aff::project_domain_on_params() const
11829{
11830 auto res = isl_pw_aff_project_domain_on_params(copy());
11831 return manage(res);
11832}
11833
11834pw_aff pw_aff::pullback(multi_aff ma) const
11835{
11836 auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
11837 return manage(res);
11838}
11839
11840pw_aff pw_aff::pullback(pw_multi_aff pma) const
11841{
11842 auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
11843 return manage(res);
11844}
11845
11846pw_aff pw_aff::pullback(multi_pw_aff mpa) const
11847{
11848 auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
11849 return manage(res);
11850}
11851
11852pw_aff pw_aff::reset_tuple_id(isl::dim type) const
11853{
11854 auto res = isl_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
11855 return manage(res);
11856}
11857
11858pw_aff pw_aff::reset_user() const
11859{
11860 auto res = isl_pw_aff_reset_user(copy());
11861 return manage(res);
11862}
11863
11864pw_aff pw_aff::scale(val v) const
11865{
11866 auto res = isl_pw_aff_scale_val(copy(), v.release());
11867 return manage(res);
11868}
11869
11870pw_aff pw_aff::scale_down(val f) const
11871{
11872 auto res = isl_pw_aff_scale_down_val(copy(), f.release());
11873 return manage(res);
11874}
11875
11876pw_aff pw_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
11877{
11878 auto res = isl_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
11879 return manage(res);
11880}
11881
11882pw_aff pw_aff::set_tuple_id(isl::dim type, id id) const
11883{
11884 auto res = isl_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11885 return manage(res);
11886}
11887
11888pw_aff pw_aff::sub(pw_aff pwaff2) const
11889{
11890 auto res = isl_pw_aff_sub(copy(), pwaff2.release());
11891 return manage(res);
11892}
11893
11894pw_aff pw_aff::subtract_domain(set set) const
11895{
11896 auto res = isl_pw_aff_subtract_domain(copy(), set.release());
11897 return manage(res);
11898}
11899
11900pw_aff pw_aff::tdiv_q(pw_aff pa2) const
11901{
11902 auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
11903 return manage(res);
11904}
11905
11906pw_aff pw_aff::tdiv_r(pw_aff pa2) const
11907{
11908 auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
11909 return manage(res);
11910}
11911
11912pw_aff pw_aff::union_add(pw_aff pwaff2) const
11913{
11914 auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
11915 return manage(res);
11916}
11917
11918pw_aff pw_aff::union_max(pw_aff pwaff2) const
11919{
11920 auto res = isl_pw_aff_union_max(copy(), pwaff2.release());
11921 return manage(res);
11922}
11923
11924pw_aff pw_aff::union_min(pw_aff pwaff2) const
11925{
11926 auto res = isl_pw_aff_union_min(copy(), pwaff2.release());
11927 return manage(res);
11928}
11929
11930pw_aff pw_aff::var_on_domain(local_space ls, isl::dim type, unsigned int pos)
11931{
11932 auto res = isl_pw_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
11933 return manage(res);
11934}
11935
11936set pw_aff::zero_set() const
11937{
11938 auto res = isl_pw_aff_zero_set(copy());
11939 return manage(res);
11940}
11941
11942// implementations for isl::pw_aff_list
11943pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
11944 return pw_aff_list(ptr);
11945}
11946pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
11947 ptr = isl_pw_aff_list_copy(ptr);
11948 return pw_aff_list(ptr);
11949}
11950
11951pw_aff_list::pw_aff_list()
11952 : ptr(nullptr) {}
11953
11954pw_aff_list::pw_aff_list(const pw_aff_list &obj)
11955 : ptr(nullptr)
11956{
11957 ptr = obj.copy();
11958}
11959pw_aff_list::pw_aff_list(std::nullptr_t)
11960 : ptr(nullptr) {}
11961
11962
11963pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
11964 : ptr(ptr) {}
11965
11966
11967pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
11968 std::swap(this->ptr, obj.ptr);
11969 return *this;
11970}
11971
11972pw_aff_list::~pw_aff_list() {
11973 if (ptr)
11974 isl_pw_aff_list_free(ptr);
11975}
11976
11977__isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
11978 return isl_pw_aff_list_copy(ptr);
11979}
11980
11981__isl_keep isl_pw_aff_list *pw_aff_list::get() const {
11982 return ptr;
11983}
11984
11985__isl_give isl_pw_aff_list *pw_aff_list::release() {
11986 isl_pw_aff_list *tmp = ptr;
11987 ptr = nullptr;
11988 return tmp;
11989}
11990
11991bool pw_aff_list::is_null() const {
11992 return ptr == nullptr;
11993}
11994pw_aff_list::operator bool() const {
11995 return !is_null();
11996}
11997
11998
11999ctx pw_aff_list::get_ctx() const {
12000 return ctx(isl_pw_aff_list_get_ctx(ptr));
12001}
12002
12003void pw_aff_list::dump() const {
12004 isl_pw_aff_list_dump(get());
12005}
12006
12007
12008pw_aff_list pw_aff_list::add(pw_aff el) const
12009{
12010 auto res = isl_pw_aff_list_add(copy(), el.release());
12011 return manage(res);
12012}
12013
12014pw_aff_list pw_aff_list::alloc(ctx ctx, int n)
12015{
12016 auto res = isl_pw_aff_list_alloc(ctx.release(), n);
12017 return manage(res);
12018}
12019
12020pw_aff_list pw_aff_list::concat(pw_aff_list list2) const
12021{
12022 auto res = isl_pw_aff_list_concat(copy(), list2.release());
12023 return manage(res);
12024}
12025
12026pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
12027{
12028 auto res = isl_pw_aff_list_drop(copy(), first, n);
12029 return manage(res);
12030}
12031
12032set pw_aff_list::eq_set(pw_aff_list list2) const
12033{
12034 auto res = isl_pw_aff_list_eq_set(copy(), list2.release());
12035 return manage(res);
12036}
12037
12038stat pw_aff_list::foreach(const std::function<stat(pw_aff)> &fn) const
12039{
12040 struct fn_data {
12041 const std::function<stat(pw_aff)> *func;
12042 } fn_data = { &fn };
12043 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
12044 auto *data = static_cast<struct fn_data *>(arg_1);
12045 stat ret = (*data->func)(manage(arg_0));
12046 return ret.release();
12047 };
12048 auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
12049 return manage(res);
12050}
12051
12052pw_aff_list pw_aff_list::from_pw_aff(pw_aff el)
12053{
12054 auto res = isl_pw_aff_list_from_pw_aff(el.release());
12055 return manage(res);
12056}
12057
12058set pw_aff_list::ge_set(pw_aff_list list2) const
12059{
12060 auto res = isl_pw_aff_list_ge_set(copy(), list2.release());
12061 return manage(res);
12062}
12063
12064pw_aff pw_aff_list::get_at(int index) const
12065{
12066 auto res = isl_pw_aff_list_get_at(get(), index);
12067 return manage(res);
12068}
12069
12070pw_aff pw_aff_list::get_pw_aff(int index) const
12071{
12072 auto res = isl_pw_aff_list_get_pw_aff(get(), index);
12073 return manage(res);
12074}
12075
12076set pw_aff_list::gt_set(pw_aff_list list2) const
12077{
12078 auto res = isl_pw_aff_list_gt_set(copy(), list2.release());
12079 return manage(res);
12080}
12081
12082pw_aff_list pw_aff_list::insert(unsigned int pos, pw_aff el) const
12083{
12084 auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
12085 return manage(res);
12086}
12087
12088set pw_aff_list::le_set(pw_aff_list list2) const
12089{
12090 auto res = isl_pw_aff_list_le_set(copy(), list2.release());
12091 return manage(res);
12092}
12093
12094set pw_aff_list::lt_set(pw_aff_list list2) const
12095{
12096 auto res = isl_pw_aff_list_lt_set(copy(), list2.release());
12097 return manage(res);
12098}
12099
12100pw_aff pw_aff_list::max() const
12101{
12102 auto res = isl_pw_aff_list_max(copy());
12103 return manage(res);
12104}
12105
12106pw_aff pw_aff_list::min() const
12107{
12108 auto res = isl_pw_aff_list_min(copy());
12109 return manage(res);
12110}
12111
12112int pw_aff_list::n_pw_aff() const
12113{
12114 auto res = isl_pw_aff_list_n_pw_aff(get());
12115 return res;
12116}
12117
12118set pw_aff_list::ne_set(pw_aff_list list2) const
12119{
12120 auto res = isl_pw_aff_list_ne_set(copy(), list2.release());
12121 return manage(res);
12122}
12123
12124pw_aff_list pw_aff_list::reverse() const
12125{
12126 auto res = isl_pw_aff_list_reverse(copy());
12127 return manage(res);
12128}
12129
12130pw_aff_list pw_aff_list::set_pw_aff(int index, pw_aff el) const
12131{
12132 auto res = isl_pw_aff_list_set_pw_aff(copy(), index, el.release());
12133 return manage(res);
12134}
12135
12136int pw_aff_list::size() const
12137{
12138 auto res = isl_pw_aff_list_size(get());
12139 return res;
12140}
12141
12142pw_aff_list pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const
12143{
12144 auto res = isl_pw_aff_list_swap(copy(), pos1, pos2);
12145 return manage(res);
12146}
12147
12148// implementations for isl::pw_multi_aff
12149pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
12150 return pw_multi_aff(ptr);
12151}
12152pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
12153 ptr = isl_pw_multi_aff_copy(ptr);
12154 return pw_multi_aff(ptr);
12155}
12156
12157pw_multi_aff::pw_multi_aff()
12158 : ptr(nullptr) {}
12159
12160pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
12161 : ptr(nullptr)
12162{
12163 ptr = obj.copy();
12164}
12165pw_multi_aff::pw_multi_aff(std::nullptr_t)
12166 : ptr(nullptr) {}
12167
12168
12169pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
12170 : ptr(ptr) {}
12171
12172pw_multi_aff::pw_multi_aff(multi_aff ma)
12173{
12174 auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
12175 ptr = res;
12176}
12177pw_multi_aff::pw_multi_aff(pw_aff pa)
12178{
12179 auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
12180 ptr = res;
12181}
12182pw_multi_aff::pw_multi_aff(ctx ctx, const std::string &str)
12183{
12184 auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
12185 ptr = res;
12186}
12187
12188pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
12189 std::swap(this->ptr, obj.ptr);
12190 return *this;
12191}
12192
12193pw_multi_aff::~pw_multi_aff() {
12194 if (ptr)
12195 isl_pw_multi_aff_free(ptr);
12196}
12197
12198__isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
12199 return isl_pw_multi_aff_copy(ptr);
12200}
12201
12202__isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
12203 return ptr;
12204}
12205
12206__isl_give isl_pw_multi_aff *pw_multi_aff::release() {
12207 isl_pw_multi_aff *tmp = ptr;
12208 ptr = nullptr;
12209 return tmp;
12210}
12211
12212bool pw_multi_aff::is_null() const {
12213 return ptr == nullptr;
12214}
12215pw_multi_aff::operator bool() const {
12216 return !is_null();
12217}
12218
12219
12220ctx pw_multi_aff::get_ctx() const {
12221 return ctx(isl_pw_multi_aff_get_ctx(ptr));
12222}
12223std::string pw_multi_aff::to_str() const {
12224 char *Tmp = isl_pw_multi_aff_to_str(get());
12225 if (!Tmp)
12226 return "";
12227 std::string S(Tmp);
12228 free(Tmp);
12229 return S;
12230}
12231
12232
12233void pw_multi_aff::dump() const {
12234 isl_pw_multi_aff_dump(get());
12235}
12236
12237
12238pw_multi_aff pw_multi_aff::add(pw_multi_aff pma2) const
12239{
12240 auto res = isl_pw_multi_aff_add(copy(), pma2.release());
12241 return manage(res);
12242}
12243
12244pw_multi_aff pw_multi_aff::align_params(space model) const
12245{
12246 auto res = isl_pw_multi_aff_align_params(copy(), model.release());
12247 return manage(res);
12248}
12249
12250pw_multi_aff pw_multi_aff::alloc(set set, multi_aff maff)
12251{
12252 auto res = isl_pw_multi_aff_alloc(set.release(), maff.release());
12253 return manage(res);
12254}
12255
12256pw_multi_aff pw_multi_aff::coalesce() const
12257{
12258 auto res = isl_pw_multi_aff_coalesce(copy());
12259 return manage(res);
12260}
12261
12262unsigned int pw_multi_aff::dim(isl::dim type) const
12263{
12264 auto res = isl_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
12265 return res;
12266}
12267
12268set pw_multi_aff::domain() const
12269{
12270 auto res = isl_pw_multi_aff_domain(copy());
12271 return manage(res);
12272}
12273
12274pw_multi_aff pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
12275{
12276 auto res = isl_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12277 return manage(res);
12278}
12279
12280pw_multi_aff pw_multi_aff::drop_unused_params() const
12281{
12282 auto res = isl_pw_multi_aff_drop_unused_params(copy());
12283 return manage(res);
12284}
12285
12286pw_multi_aff pw_multi_aff::empty(space space)
12287{
12288 auto res = isl_pw_multi_aff_empty(space.release());
12289 return manage(res);
12290}
12291
12292int pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
12293{
12294 auto res = isl_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
12295 return res;
12296}
12297
12298pw_multi_aff pw_multi_aff::fix_si(isl::dim type, unsigned int pos, int value) const
12299{
12300 auto res = isl_pw_multi_aff_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
12301 return manage(res);
12302}
12303
12304pw_multi_aff pw_multi_aff::flat_range_product(pw_multi_aff pma2) const
12305{
12306 auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
12307 return manage(res);
12308}
12309
12310stat pw_multi_aff::foreach_piece(const std::function<stat(set, multi_aff)> &fn) const
12311{
12312 struct fn_data {
12313 const std::function<stat(set, multi_aff)> *func;
12314 } fn_data = { &fn };
12315 auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
12316 auto *data = static_cast<struct fn_data *>(arg_2);
12317 stat ret = (*data->func)(manage(arg_0), manage(arg_1));
12318 return ret.release();
12319 };
12320 auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
12321 return manage(res);
12322}
12323
12324pw_multi_aff pw_multi_aff::from_domain(set set)
12325{
12326 auto res = isl_pw_multi_aff_from_domain(set.release());
12327 return manage(res);
12328}
12329
12330pw_multi_aff pw_multi_aff::from_map(map map)
12331{
12332 auto res = isl_pw_multi_aff_from_map(map.release());
12333 return manage(res);
12334}
12335
12336pw_multi_aff pw_multi_aff::from_multi_pw_aff(multi_pw_aff mpa)
12337{
12338 auto res = isl_pw_multi_aff_from_multi_pw_aff(mpa.release());
12339 return manage(res);
12340}
12341
12342pw_multi_aff pw_multi_aff::from_set(set set)
12343{
12344 auto res = isl_pw_multi_aff_from_set(set.release());
12345 return manage(res);
12346}
12347
12348id pw_multi_aff::get_dim_id(isl::dim type, unsigned int pos) const
12349{
12350 auto res = isl_pw_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12351 return manage(res);
12352}
12353
12354std::string pw_multi_aff::get_dim_name(isl::dim type, unsigned int pos) const
12355{
12356 auto res = isl_pw_multi_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
12357 std::string tmp(res);
12358 return tmp;
12359}
12360
12361space pw_multi_aff::get_domain_space() const
12362{
12363 auto res = isl_pw_multi_aff_get_domain_space(get());
12364 return manage(res);
12365}
12366
12367pw_aff pw_multi_aff::get_pw_aff(int pos) const
12368{
12369 auto res = isl_pw_multi_aff_get_pw_aff(get(), pos);
12370 return manage(res);
12371}
12372
12373space pw_multi_aff::get_space() const
12374{
12375 auto res = isl_pw_multi_aff_get_space(get());
12376 return manage(res);
12377}
12378
12379id pw_multi_aff::get_tuple_id(isl::dim type) const
12380{
12381 auto res = isl_pw_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12382 return manage(res);
12383}
12384
12385std::string pw_multi_aff::get_tuple_name(isl::dim type) const
12386{
12387 auto res = isl_pw_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
12388 std::string tmp(res);
12389 return tmp;
12390}
12391
12392pw_multi_aff pw_multi_aff::gist(set set) const
12393{
12394 auto res = isl_pw_multi_aff_gist(copy(), set.release());
12395 return manage(res);
12396}
12397
12398pw_multi_aff pw_multi_aff::gist_params(set set) const
12399{
12400 auto res = isl_pw_multi_aff_gist_params(copy(), set.release());
12401 return manage(res);
12402}
12403
12404boolean pw_multi_aff::has_tuple_id(isl::dim type) const
12405{
12406 auto res = isl_pw_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12407 return manage(res);
12408}
12409
12410boolean pw_multi_aff::has_tuple_name(isl::dim type) const
12411{
12412 auto res = isl_pw_multi_aff_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
12413 return manage(res);
12414}
12415
12416pw_multi_aff pw_multi_aff::identity(space space)
12417{
12418 auto res = isl_pw_multi_aff_identity(space.release());
12419 return manage(res);
12420}
12421
12422pw_multi_aff pw_multi_aff::intersect_domain(set set) const
12423{
12424 auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
12425 return manage(res);
12426}
12427
12428pw_multi_aff pw_multi_aff::intersect_params(set set) const
12429{
12430 auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
12431 return manage(res);
12432}
12433
12434boolean pw_multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
12435{
12436 auto res = isl_pw_multi_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
12437 return manage(res);
12438}
12439
12440boolean pw_multi_aff::involves_nan() const
12441{
12442 auto res = isl_pw_multi_aff_involves_nan(get());
12443 return manage(res);
12444}
12445
12446boolean pw_multi_aff::is_equal(const pw_multi_aff &pma2) const
12447{
12448 auto res = isl_pw_multi_aff_is_equal(get(), pma2.get());
12449 return manage(res);
12450}
12451
12452pw_multi_aff pw_multi_aff::multi_val_on_domain(set domain, multi_val mv)
12453{
12454 auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
12455 return manage(res);
12456}
12457
12458int pw_multi_aff::n_piece() const
12459{
12460 auto res = isl_pw_multi_aff_n_piece(get());
12461 return res;
12462}
12463
12464pw_multi_aff pw_multi_aff::neg() const
12465{
12466 auto res = isl_pw_multi_aff_neg(copy());
12467 return manage(res);
12468}
12469
12470boolean pw_multi_aff::plain_is_equal(const pw_multi_aff &pma2) const
12471{
12472 auto res = isl_pw_multi_aff_plain_is_equal(get(), pma2.get());
12473 return manage(res);
12474}
12475
12476pw_multi_aff pw_multi_aff::product(pw_multi_aff pma2) const
12477{
12478 auto res = isl_pw_multi_aff_product(copy(), pma2.release());
12479 return manage(res);
12480}
12481
12482pw_multi_aff pw_multi_aff::project_domain_on_params() const
12483{
12484 auto res = isl_pw_multi_aff_project_domain_on_params(copy());
12485 return manage(res);
12486}
12487
12488pw_multi_aff pw_multi_aff::project_out_map(space space, isl::dim type, unsigned int first, unsigned int n)
12489{
12490 auto res = isl_pw_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
12491 return manage(res);
12492}
12493
12494pw_multi_aff pw_multi_aff::pullback(multi_aff ma) const
12495{
12496 auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
12497 return manage(res);
12498}
12499
12500pw_multi_aff pw_multi_aff::pullback(pw_multi_aff pma2) const
12501{
12502 auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
12503 return manage(res);
12504}
12505
12506pw_multi_aff pw_multi_aff::range_map(space space)
12507{
12508 auto res = isl_pw_multi_aff_range_map(space.release());
12509 return manage(res);
12510}
12511
12512pw_multi_aff pw_multi_aff::range_product(pw_multi_aff pma2) const
12513{
12514 auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
12515 return manage(res);
12516}
12517
12518pw_multi_aff pw_multi_aff::reset_tuple_id(isl::dim type) const
12519{
12520 auto res = isl_pw_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
12521 return manage(res);
12522}
12523
12524pw_multi_aff pw_multi_aff::reset_user() const
12525{
12526 auto res = isl_pw_multi_aff_reset_user(copy());
12527 return manage(res);
12528}
12529
12530pw_multi_aff pw_multi_aff::scale_down_val(val v) const
12531{
12532 auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
12533 return manage(res);
12534}
12535
12536pw_multi_aff pw_multi_aff::scale_multi_val(multi_val mv) const
12537{
12538 auto res = isl_pw_multi_aff_scale_multi_val(copy(), mv.release());
12539 return manage(res);
12540}
12541
12542pw_multi_aff pw_multi_aff::scale_val(val v) const
12543{
12544 auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
12545 return manage(res);
12546}
12547
12548pw_multi_aff pw_multi_aff::set_dim_id(isl::dim type, unsigned int pos, id id) const
12549{
12550 auto res = isl_pw_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
12551 return manage(res);
12552}
12553
12554pw_multi_aff pw_multi_aff::set_pw_aff(unsigned int pos, pw_aff pa) const
12555{
12556 auto res = isl_pw_multi_aff_set_pw_aff(copy(), pos, pa.release());
12557 return manage(res);
12558}
12559
12560pw_multi_aff pw_multi_aff::set_tuple_id(isl::dim type, id id) const
12561{
12562 auto res = isl_pw_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
12563 return manage(res);
12564}
12565
12566pw_multi_aff pw_multi_aff::sub(pw_multi_aff pma2) const
12567{
12568 auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
12569 return manage(res);
12570}
12571
12572pw_multi_aff pw_multi_aff::subtract_domain(set set) const
12573{
12574 auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
12575 return manage(res);
12576}
12577
12578pw_multi_aff pw_multi_aff::union_add(pw_multi_aff pma2) const
12579{
12580 auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
12581 return manage(res);
12582}
12583
12584pw_multi_aff pw_multi_aff::union_lexmax(pw_multi_aff pma2) const
12585{
12586 auto res = isl_pw_multi_aff_union_lexmax(copy(), pma2.release());
12587 return manage(res);
12588}
12589
12590pw_multi_aff pw_multi_aff::union_lexmin(pw_multi_aff pma2) const
12591{
12592 auto res = isl_pw_multi_aff_union_lexmin(copy(), pma2.release());
12593 return manage(res);
12594}
12595
12596pw_multi_aff pw_multi_aff::zero(space space)
12597{
12598 auto res = isl_pw_multi_aff_zero(space.release());
12599 return manage(res);
12600}
12601
12602// implementations for isl::pw_multi_aff_list
12603pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
12604 return pw_multi_aff_list(ptr);
12605}
12606pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
12607 ptr = isl_pw_multi_aff_list_copy(ptr);
12608 return pw_multi_aff_list(ptr);
12609}
12610
12611pw_multi_aff_list::pw_multi_aff_list()
12612 : ptr(nullptr) {}
12613
12614pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
12615 : ptr(nullptr)
12616{
12617 ptr = obj.copy();
12618}
12619pw_multi_aff_list::pw_multi_aff_list(std::nullptr_t)
12620 : ptr(nullptr) {}
12621
12622
12623pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
12624 : ptr(ptr) {}
12625
12626
12627pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
12628 std::swap(this->ptr, obj.ptr);
12629 return *this;
12630}
12631
12632pw_multi_aff_list::~pw_multi_aff_list() {
12633 if (ptr)
12634 isl_pw_multi_aff_list_free(ptr);
12635}
12636
12637__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
12638 return isl_pw_multi_aff_list_copy(ptr);
12639}
12640
12641__isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
12642 return ptr;
12643}
12644
12645__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
12646 isl_pw_multi_aff_list *tmp = ptr;
12647 ptr = nullptr;
12648 return tmp;
12649}
12650
12651bool pw_multi_aff_list::is_null() const {
12652 return ptr == nullptr;
12653}
12654pw_multi_aff_list::operator bool() const {
12655 return !is_null();
12656}
12657
12658
12659ctx pw_multi_aff_list::get_ctx() const {
12660 return ctx(isl_pw_multi_aff_list_get_ctx(ptr));
12661}
12662
12663void pw_multi_aff_list::dump() const {
12664 isl_pw_multi_aff_list_dump(get());
12665}
12666
12667
12668pw_multi_aff_list pw_multi_aff_list::add(pw_multi_aff el) const
12669{
12670 auto res = isl_pw_multi_aff_list_add(copy(), el.release());
12671 return manage(res);
12672}
12673
12674pw_multi_aff_list pw_multi_aff_list::alloc(ctx ctx, int n)
12675{
12676 auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
12677 return manage(res);
12678}
12679
12680pw_multi_aff_list pw_multi_aff_list::concat(pw_multi_aff_list list2) const
12681{
12682 auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
12683 return manage(res);
12684}
12685
12686pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
12687{
12688 auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
12689 return manage(res);
12690}
12691
12692stat pw_multi_aff_list::foreach(const std::function<stat(pw_multi_aff)> &fn) const
12693{
12694 struct fn_data {
12695 const std::function<stat(pw_multi_aff)> *func;
12696 } fn_data = { &fn };
12697 auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
12698 auto *data = static_cast<struct fn_data *>(arg_1);
12699 stat ret = (*data->func)(manage(arg_0));
12700 return ret.release();
12701 };
12702 auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
12703 return manage(res);
12704}
12705
12706pw_multi_aff_list pw_multi_aff_list::from_pw_multi_aff(pw_multi_aff el)
12707{
12708 auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
12709 return manage(res);
12710}
12711
12712pw_multi_aff pw_multi_aff_list::get_at(int index) const
12713{
12714 auto res = isl_pw_multi_aff_list_get_at(get(), index);
12715 return manage(res);
12716}
12717
12718pw_multi_aff pw_multi_aff_list::get_pw_multi_aff(int index) const
12719{
12720 auto res = isl_pw_multi_aff_list_get_pw_multi_aff(get(), index);
12721 return manage(res);
12722}
12723
12724pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, pw_multi_aff el) const
12725{
12726 auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
12727 return manage(res);
12728}
12729
12730int pw_multi_aff_list::n_pw_multi_aff() const
12731{
12732 auto res = isl_pw_multi_aff_list_n_pw_multi_aff(get());
12733 return res;
12734}
12735
12736pw_multi_aff_list pw_multi_aff_list::reverse() const
12737{
12738 auto res = isl_pw_multi_aff_list_reverse(copy());
12739 return manage(res);
12740}
12741
12742pw_multi_aff_list pw_multi_aff_list::set_pw_multi_aff(int index, pw_multi_aff el) const
12743{
12744 auto res = isl_pw_multi_aff_list_set_pw_multi_aff(copy(), index, el.release());
12745 return manage(res);
12746}
12747
12748int pw_multi_aff_list::size() const
12749{
12750 auto res = isl_pw_multi_aff_list_size(get());
12751 return res;
12752}
12753
12754pw_multi_aff_list pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const
12755{
12756 auto res = isl_pw_multi_aff_list_swap(copy(), pos1, pos2);
12757 return manage(res);
12758}
12759
12760// implementations for isl::pw_qpolynomial
12761pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr) {
12762 return pw_qpolynomial(ptr);
12763}
12764pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr) {
12765 ptr = isl_pw_qpolynomial_copy(ptr);
12766 return pw_qpolynomial(ptr);
12767}
12768
12769pw_qpolynomial::pw_qpolynomial()
12770 : ptr(nullptr) {}
12771
12772pw_qpolynomial::pw_qpolynomial(const pw_qpolynomial &obj)
12773 : ptr(nullptr)
12774{
12775 ptr = obj.copy();
12776}
12777pw_qpolynomial::pw_qpolynomial(std::nullptr_t)
12778 : ptr(nullptr) {}
12779
12780
12781pw_qpolynomial::pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr)
12782 : ptr(ptr) {}
12783
12784pw_qpolynomial::pw_qpolynomial(ctx ctx, const std::string &str)
12785{
12786 auto res = isl_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
12787 ptr = res;
12788}
12789
12790pw_qpolynomial &pw_qpolynomial::operator=(pw_qpolynomial obj) {
12791 std::swap(this->ptr, obj.ptr);
12792 return *this;
12793}
12794
12795pw_qpolynomial::~pw_qpolynomial() {
12796 if (ptr)
12797 isl_pw_qpolynomial_free(ptr);
12798}
12799
12800__isl_give isl_pw_qpolynomial *pw_qpolynomial::copy() const & {
12801 return isl_pw_qpolynomial_copy(ptr);
12802}
12803
12804__isl_keep isl_pw_qpolynomial *pw_qpolynomial::get() const {
12805 return ptr;
12806}
12807
12808__isl_give isl_pw_qpolynomial *pw_qpolynomial::release() {
12809 isl_pw_qpolynomial *tmp = ptr;
12810 ptr = nullptr;
12811 return tmp;
12812}
12813
12814bool pw_qpolynomial::is_null() const {
12815 return ptr == nullptr;
12816}
12817pw_qpolynomial::operator bool() const {
12818 return !is_null();
12819}
12820
12821
12822ctx pw_qpolynomial::get_ctx() const {
12823 return ctx(isl_pw_qpolynomial_get_ctx(ptr));
12824}
12825std::string pw_qpolynomial::to_str() const {
12826 char *Tmp = isl_pw_qpolynomial_to_str(get());
12827 if (!Tmp)
12828 return "";
12829 std::string S(Tmp);
12830 free(Tmp);
12831 return S;
12832}
12833
12834
12835void pw_qpolynomial::dump() const {
12836 isl_pw_qpolynomial_dump(get());
12837}
12838
12839
12840pw_qpolynomial pw_qpolynomial::add(pw_qpolynomial pwqp2) const
12841{
12842 auto res = isl_pw_qpolynomial_add(copy(), pwqp2.release());
12843 return manage(res);
12844}
12845
12846pw_qpolynomial pw_qpolynomial::add_dims(isl::dim type, unsigned int n) const
12847{
12848 auto res = isl_pw_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
12849 return manage(res);
12850}
12851
12852pw_qpolynomial pw_qpolynomial::alloc(set set, qpolynomial qp)
12853{
12854 auto res = isl_pw_qpolynomial_alloc(set.release(), qp.release());
12855 return manage(res);
12856}
12857
12858pw_qpolynomial pw_qpolynomial::coalesce() const
12859{
12860 auto res = isl_pw_qpolynomial_coalesce(copy());
12861 return manage(res);
12862}
12863
12864unsigned int pw_qpolynomial::dim(isl::dim type) const
12865{
12866 auto res = isl_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
12867 return res;
12868}
12869
12870set pw_qpolynomial::domain() const
12871{
12872 auto res = isl_pw_qpolynomial_domain(copy());
12873 return manage(res);
12874}
12875
12876pw_qpolynomial pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
12877{
12878 auto res = isl_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12879 return manage(res);
12880}
12881
12882pw_qpolynomial pw_qpolynomial::drop_unused_params() const
12883{
12884 auto res = isl_pw_qpolynomial_drop_unused_params(copy());
12885 return manage(res);
12886}
12887
12888val pw_qpolynomial::eval(point pnt) const
12889{
12890 auto res = isl_pw_qpolynomial_eval(copy(), pnt.release());
12891 return manage(res);
12892}
12893
12894int pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const
12895{
12896 auto res = isl_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
12897 return res;
12898}
12899
12900pw_qpolynomial pw_qpolynomial::fix_val(isl::dim type, unsigned int n, val v) const
12901{
12902 auto res = isl_pw_qpolynomial_fix_val(copy(), static_cast<enum isl_dim_type>(type), n, v.release());
12903 return manage(res);
12904}
12905
12906stat pw_qpolynomial::foreach_piece(const std::function<stat(set, qpolynomial)> &fn) const
12907{
12908 struct fn_data {
12909 const std::function<stat(set, qpolynomial)> *func;
12910 } fn_data = { &fn };
12911 auto fn_lambda = [](isl_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
12912 auto *data = static_cast<struct fn_data *>(arg_2);
12913 stat ret = (*data->func)(manage(arg_0), manage(arg_1));
12914 return ret.release();
12915 };
12916 auto res = isl_pw_qpolynomial_foreach_piece(get(), fn_lambda, &fn_data);
12917 return manage(res);
12918}
12919
12920pw_qpolynomial pw_qpolynomial::from_pw_aff(pw_aff pwaff)
12921{
12922 auto res = isl_pw_qpolynomial_from_pw_aff(pwaff.release());
12923 return manage(res);
12924}
12925
12926pw_qpolynomial pw_qpolynomial::from_qpolynomial(qpolynomial qp)
12927{
12928 auto res = isl_pw_qpolynomial_from_qpolynomial(qp.release());
12929 return manage(res);
12930}
12931
12932pw_qpolynomial pw_qpolynomial::from_range() const
12933{
12934 auto res = isl_pw_qpolynomial_from_range(copy());
12935 return manage(res);
12936}
12937
12938space pw_qpolynomial::get_domain_space() const
12939{
12940 auto res = isl_pw_qpolynomial_get_domain_space(get());
12941 return manage(res);
12942}
12943
12944space pw_qpolynomial::get_space() const
12945{
12946 auto res = isl_pw_qpolynomial_get_space(get());
12947 return manage(res);
12948}
12949
12950pw_qpolynomial pw_qpolynomial::gist(set context) const
12951{
12952 auto res = isl_pw_qpolynomial_gist(copy(), context.release());
12953 return manage(res);
12954}
12955
12956pw_qpolynomial pw_qpolynomial::gist_params(set context) const
12957{
12958 auto res = isl_pw_qpolynomial_gist_params(copy(), context.release());
12959 return manage(res);
12960}
12961
12962boolean pw_qpolynomial::has_equal_space(const pw_qpolynomial &pwqp2) const
12963{
12964 auto res = isl_pw_qpolynomial_has_equal_space(get(), pwqp2.get());
12965 return manage(res);
12966}
12967
12968pw_qpolynomial pw_qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
12969{
12970 auto res = isl_pw_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12971 return manage(res);
12972}
12973
12974pw_qpolynomial pw_qpolynomial::intersect_domain(set set) const
12975{
12976 auto res = isl_pw_qpolynomial_intersect_domain(copy(), set.release());
12977 return manage(res);
12978}
12979
12980pw_qpolynomial pw_qpolynomial::intersect_params(set set) const
12981{
12982 auto res = isl_pw_qpolynomial_intersect_params(copy(), set.release());
12983 return manage(res);
12984}
12985
12986boolean pw_qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
12987{
12988 auto res = isl_pw_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
12989 return manage(res);
12990}
12991
12992boolean pw_qpolynomial::involves_nan() const
12993{
12994 auto res = isl_pw_qpolynomial_involves_nan(get());
12995 return manage(res);
12996}
12997
12998boolean pw_qpolynomial::is_zero() const
12999{
13000 auto res = isl_pw_qpolynomial_is_zero(get());
13001 return manage(res);
13002}
13003
13004val pw_qpolynomial::max() const
13005{
13006 auto res = isl_pw_qpolynomial_max(copy());
13007 return manage(res);
13008}
13009
13010val pw_qpolynomial::min() const
13011{
13012 auto res = isl_pw_qpolynomial_min(copy());
13013 return manage(res);
13014}
13015
13016pw_qpolynomial pw_qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
13017{
13018 auto res = isl_pw_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
13019 return manage(res);
13020}
13021
13022pw_qpolynomial pw_qpolynomial::mul(pw_qpolynomial pwqp2) const
13023{
13024 auto res = isl_pw_qpolynomial_mul(copy(), pwqp2.release());
13025 return manage(res);
13026}
13027
13028int pw_qpolynomial::n_piece() const
13029{
13030 auto res = isl_pw_qpolynomial_n_piece(get());
13031 return res;
13032}
13033
13034pw_qpolynomial pw_qpolynomial::neg() const
13035{
13036 auto res = isl_pw_qpolynomial_neg(copy());
13037 return manage(res);
13038}
13039
13040boolean pw_qpolynomial::plain_is_equal(const pw_qpolynomial &pwqp2) const
13041{
13042 auto res = isl_pw_qpolynomial_plain_is_equal(get(), pwqp2.get());
13043 return manage(res);
13044}
13045
13046pw_qpolynomial pw_qpolynomial::pow(unsigned int exponent) const
13047{
13048 auto res = isl_pw_qpolynomial_pow(copy(), exponent);
13049 return manage(res);
13050}
13051
13052pw_qpolynomial pw_qpolynomial::project_domain_on_params() const
13053{
13054 auto res = isl_pw_qpolynomial_project_domain_on_params(copy());
13055 return manage(res);
13056}
13057
13058pw_qpolynomial pw_qpolynomial::reset_domain_space(space dim) const
13059{
13060 auto res = isl_pw_qpolynomial_reset_domain_space(copy(), dim.release());
13061 return manage(res);
13062}
13063
13064pw_qpolynomial pw_qpolynomial::reset_user() const
13065{
13066 auto res = isl_pw_qpolynomial_reset_user(copy());
13067 return manage(res);
13068}
13069
13070pw_qpolynomial pw_qpolynomial::scale_down_val(val v) const
13071{
13072 auto res = isl_pw_qpolynomial_scale_down_val(copy(), v.release());
13073 return manage(res);
13074}
13075
13076pw_qpolynomial pw_qpolynomial::scale_val(val v) const
13077{
13078 auto res = isl_pw_qpolynomial_scale_val(copy(), v.release());
13079 return manage(res);
13080}
13081
13082pw_qpolynomial pw_qpolynomial::split_dims(isl::dim type, unsigned int first, unsigned int n) const
13083{
13084 auto res = isl_pw_qpolynomial_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13085 return manage(res);
13086}
13087
13088pw_qpolynomial pw_qpolynomial::split_periods(int max_periods) const
13089{
13090 auto res = isl_pw_qpolynomial_split_periods(copy(), max_periods);
13091 return manage(res);
13092}
13093
13094pw_qpolynomial pw_qpolynomial::sub(pw_qpolynomial pwqp2) const
13095{
13096 auto res = isl_pw_qpolynomial_sub(copy(), pwqp2.release());
13097 return manage(res);
13098}
13099
13100pw_qpolynomial pw_qpolynomial::subtract_domain(set set) const
13101{
13102 auto res = isl_pw_qpolynomial_subtract_domain(copy(), set.release());
13103 return manage(res);
13104}
13105
13106pw_qpolynomial pw_qpolynomial::to_polynomial(int sign) const
13107{
13108 auto res = isl_pw_qpolynomial_to_polynomial(copy(), sign);
13109 return manage(res);
13110}
13111
13112pw_qpolynomial pw_qpolynomial::zero(space dim)
13113{
13114 auto res = isl_pw_qpolynomial_zero(dim.release());
13115 return manage(res);
13116}
13117
13118// implementations for isl::pw_qpolynomial_fold_list
13119pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr) {
13120 return pw_qpolynomial_fold_list(ptr);
13121}
13122pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr) {
13123 ptr = isl_pw_qpolynomial_fold_list_copy(ptr);
13124 return pw_qpolynomial_fold_list(ptr);
13125}
13126
13127pw_qpolynomial_fold_list::pw_qpolynomial_fold_list()
13128 : ptr(nullptr) {}
13129
13130pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj)
13131 : ptr(nullptr)
13132{
13133 ptr = obj.copy();
13134}
13135pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(std::nullptr_t)
13136 : ptr(nullptr) {}
13137
13138
13139pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr)
13140 : ptr(ptr) {}
13141
13142
13143pw_qpolynomial_fold_list &pw_qpolynomial_fold_list::operator=(pw_qpolynomial_fold_list obj) {
13144 std::swap(this->ptr, obj.ptr);
13145 return *this;
13146}
13147
13148pw_qpolynomial_fold_list::~pw_qpolynomial_fold_list() {
13149 if (ptr)
13150 isl_pw_qpolynomial_fold_list_free(ptr);
13151}
13152
13153__isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::copy() const & {
13154 return isl_pw_qpolynomial_fold_list_copy(ptr);
13155}
13156
13157__isl_keep isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::get() const {
13158 return ptr;
13159}
13160
13161__isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::release() {
13162 isl_pw_qpolynomial_fold_list *tmp = ptr;
13163 ptr = nullptr;
13164 return tmp;
13165}
13166
13167bool pw_qpolynomial_fold_list::is_null() const {
13168 return ptr == nullptr;
13169}
13170pw_qpolynomial_fold_list::operator bool() const {
13171 return !is_null();
13172}
13173
13174
13175ctx pw_qpolynomial_fold_list::get_ctx() const {
13176 return ctx(isl_pw_qpolynomial_fold_list_get_ctx(ptr));
13177}
13178
13179void pw_qpolynomial_fold_list::dump() const {
13180 isl_pw_qpolynomial_fold_list_dump(get());
13181}
13182
13183
13184
13185// implementations for isl::pw_qpolynomial_list
13186pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr) {
13187 return pw_qpolynomial_list(ptr);
13188}
13189pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr) {
13190 ptr = isl_pw_qpolynomial_list_copy(ptr);
13191 return pw_qpolynomial_list(ptr);
13192}
13193
13194pw_qpolynomial_list::pw_qpolynomial_list()
13195 : ptr(nullptr) {}
13196
13197pw_qpolynomial_list::pw_qpolynomial_list(const pw_qpolynomial_list &obj)
13198 : ptr(nullptr)
13199{
13200 ptr = obj.copy();
13201}
13202pw_qpolynomial_list::pw_qpolynomial_list(std::nullptr_t)
13203 : ptr(nullptr) {}
13204
13205
13206pw_qpolynomial_list::pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr)
13207 : ptr(ptr) {}
13208
13209
13210pw_qpolynomial_list &pw_qpolynomial_list::operator=(pw_qpolynomial_list obj) {
13211 std::swap(this->ptr, obj.ptr);
13212 return *this;
13213}
13214
13215pw_qpolynomial_list::~pw_qpolynomial_list() {
13216 if (ptr)
13217 isl_pw_qpolynomial_list_free(ptr);
13218}
13219
13220__isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::copy() const & {
13221 return isl_pw_qpolynomial_list_copy(ptr);
13222}
13223
13224__isl_keep isl_pw_qpolynomial_list *pw_qpolynomial_list::get() const {
13225 return ptr;
13226}
13227
13228__isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::release() {
13229 isl_pw_qpolynomial_list *tmp = ptr;
13230 ptr = nullptr;
13231 return tmp;
13232}
13233
13234bool pw_qpolynomial_list::is_null() const {
13235 return ptr == nullptr;
13236}
13237pw_qpolynomial_list::operator bool() const {
13238 return !is_null();
13239}
13240
13241
13242ctx pw_qpolynomial_list::get_ctx() const {
13243 return ctx(isl_pw_qpolynomial_list_get_ctx(ptr));
13244}
13245
13246void pw_qpolynomial_list::dump() const {
13247 isl_pw_qpolynomial_list_dump(get());
13248}
13249
13250
13251pw_qpolynomial_list pw_qpolynomial_list::add(pw_qpolynomial el) const
13252{
13253 auto res = isl_pw_qpolynomial_list_add(copy(), el.release());
13254 return manage(res);
13255}
13256
13257pw_qpolynomial_list pw_qpolynomial_list::alloc(ctx ctx, int n)
13258{
13259 auto res = isl_pw_qpolynomial_list_alloc(ctx.release(), n);
13260 return manage(res);
13261}
13262
13263pw_qpolynomial_list pw_qpolynomial_list::concat(pw_qpolynomial_list list2) const
13264{
13265 auto res = isl_pw_qpolynomial_list_concat(copy(), list2.release());
13266 return manage(res);
13267}
13268
13269pw_qpolynomial_list pw_qpolynomial_list::drop(unsigned int first, unsigned int n) const
13270{
13271 auto res = isl_pw_qpolynomial_list_drop(copy(), first, n);
13272 return manage(res);
13273}
13274
13275stat pw_qpolynomial_list::foreach(const std::function<stat(pw_qpolynomial)> &fn) const
13276{
13277 struct fn_data {
13278 const std::function<stat(pw_qpolynomial)> *func;
13279 } fn_data = { &fn };
13280 auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat {
13281 auto *data = static_cast<struct fn_data *>(arg_1);
13282 stat ret = (*data->func)(manage(arg_0));
13283 return ret.release();
13284 };
13285 auto res = isl_pw_qpolynomial_list_foreach(get(), fn_lambda, &fn_data);
13286 return manage(res);
13287}
13288
13289pw_qpolynomial_list pw_qpolynomial_list::from_pw_qpolynomial(pw_qpolynomial el)
13290{
13291 auto res = isl_pw_qpolynomial_list_from_pw_qpolynomial(el.release());
13292 return manage(res);
13293}
13294
13295pw_qpolynomial pw_qpolynomial_list::get_at(int index) const
13296{
13297 auto res = isl_pw_qpolynomial_list_get_at(get(), index);
13298 return manage(res);
13299}
13300
13301pw_qpolynomial pw_qpolynomial_list::get_pw_qpolynomial(int index) const
13302{
13303 auto res = isl_pw_qpolynomial_list_get_pw_qpolynomial(get(), index);
13304 return manage(res);
13305}
13306
13307pw_qpolynomial_list pw_qpolynomial_list::insert(unsigned int pos, pw_qpolynomial el) const
13308{
13309 auto res = isl_pw_qpolynomial_list_insert(copy(), pos, el.release());
13310 return manage(res);
13311}
13312
13313int pw_qpolynomial_list::n_pw_qpolynomial() const
13314{
13315 auto res = isl_pw_qpolynomial_list_n_pw_qpolynomial(get());
13316 return res;
13317}
13318
13319pw_qpolynomial_list pw_qpolynomial_list::reverse() const
13320{
13321 auto res = isl_pw_qpolynomial_list_reverse(copy());
13322 return manage(res);
13323}
13324
13325pw_qpolynomial_list pw_qpolynomial_list::set_pw_qpolynomial(int index, pw_qpolynomial el) const
13326{
13327 auto res = isl_pw_qpolynomial_list_set_pw_qpolynomial(copy(), index, el.release());
13328 return manage(res);
13329}
13330
13331int pw_qpolynomial_list::size() const
13332{
13333 auto res = isl_pw_qpolynomial_list_size(get());
13334 return res;
13335}
13336
13337pw_qpolynomial_list pw_qpolynomial_list::swap(unsigned int pos1, unsigned int pos2) const
13338{
13339 auto res = isl_pw_qpolynomial_list_swap(copy(), pos1, pos2);
13340 return manage(res);
13341}
13342
13343// implementations for isl::qpolynomial
13344qpolynomial manage(__isl_take isl_qpolynomial *ptr) {
13345 return qpolynomial(ptr);
13346}
13347qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr) {
13348 ptr = isl_qpolynomial_copy(ptr);
13349 return qpolynomial(ptr);
13350}
13351
13352qpolynomial::qpolynomial()
13353 : ptr(nullptr) {}
13354
13355qpolynomial::qpolynomial(const qpolynomial &obj)
13356 : ptr(nullptr)
13357{
13358 ptr = obj.copy();
13359}
13360qpolynomial::qpolynomial(std::nullptr_t)
13361 : ptr(nullptr) {}
13362
13363
13364qpolynomial::qpolynomial(__isl_take isl_qpolynomial *ptr)
13365 : ptr(ptr) {}
13366
13367
13368qpolynomial &qpolynomial::operator=(qpolynomial obj) {
13369 std::swap(this->ptr, obj.ptr);
13370 return *this;
13371}
13372
13373qpolynomial::~qpolynomial() {
13374 if (ptr)
13375 isl_qpolynomial_free(ptr);
13376}
13377
13378__isl_give isl_qpolynomial *qpolynomial::copy() const & {
13379 return isl_qpolynomial_copy(ptr);
13380}
13381
13382__isl_keep isl_qpolynomial *qpolynomial::get() const {
13383 return ptr;
13384}
13385
13386__isl_give isl_qpolynomial *qpolynomial::release() {
13387 isl_qpolynomial *tmp = ptr;
13388 ptr = nullptr;
13389 return tmp;
13390}
13391
13392bool qpolynomial::is_null() const {
13393 return ptr == nullptr;
13394}
13395qpolynomial::operator bool() const {
13396 return !is_null();
13397}
13398
13399
13400ctx qpolynomial::get_ctx() const {
13401 return ctx(isl_qpolynomial_get_ctx(ptr));
13402}
13403
13404void qpolynomial::dump() const {
13405 isl_qpolynomial_dump(get());
13406}
13407
13408
13409qpolynomial qpolynomial::add(qpolynomial qp2) const
13410{
13411 auto res = isl_qpolynomial_add(copy(), qp2.release());
13412 return manage(res);
13413}
13414
13415qpolynomial qpolynomial::add_dims(isl::dim type, unsigned int n) const
13416{
13417 auto res = isl_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
13418 return manage(res);
13419}
13420
13421qpolynomial qpolynomial::align_params(space model) const
13422{
13423 auto res = isl_qpolynomial_align_params(copy(), model.release());
13424 return manage(res);
13425}
13426
13427stat qpolynomial::as_polynomial_on_domain(const basic_set &bset, const std::function<stat(basic_set, qpolynomial)> &fn) const
13428{
13429 struct fn_data {
13430 const std::function<stat(basic_set, qpolynomial)> *func;
13431 } fn_data = { &fn };
13432 auto fn_lambda = [](isl_basic_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
13433 auto *data = static_cast<struct fn_data *>(arg_2);
13434 stat ret = (*data->func)(manage(arg_0), manage(arg_1));
13435 return ret.release();
13436 };
13437 auto res = isl_qpolynomial_as_polynomial_on_domain(get(), bset.get(), fn_lambda, &fn_data);
13438 return manage(res);
13439}
13440
13441unsigned int qpolynomial::dim(isl::dim type) const
13442{
13443 auto res = isl_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
13444 return res;
13445}
13446
13447qpolynomial qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
13448{
13449 auto res = isl_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13450 return manage(res);
13451}
13452
13453val qpolynomial::eval(point pnt) const
13454{
13455 auto res = isl_qpolynomial_eval(copy(), pnt.release());
13456 return manage(res);
13457}
13458
13459stat qpolynomial::foreach_term(const std::function<stat(term)> &fn) const
13460{
13461 struct fn_data {
13462 const std::function<stat(term)> *func;
13463 } fn_data = { &fn };
13464 auto fn_lambda = [](isl_term *arg_0, void *arg_1) -> isl_stat {
13465 auto *data = static_cast<struct fn_data *>(arg_1);
13466 stat ret = (*data->func)(manage(arg_0));
13467 return ret.release();
13468 };
13469 auto res = isl_qpolynomial_foreach_term(get(), fn_lambda, &fn_data);
13470 return manage(res);
13471}
13472
13473qpolynomial qpolynomial::from_aff(aff aff)
13474{
13475 auto res = isl_qpolynomial_from_aff(aff.release());
13476 return manage(res);
13477}
13478
13479qpolynomial qpolynomial::from_constraint(constraint c, isl::dim type, unsigned int pos)
13480{
13481 auto res = isl_qpolynomial_from_constraint(c.release(), static_cast<enum isl_dim_type>(type), pos);
13482 return manage(res);
13483}
13484
13485qpolynomial qpolynomial::from_term(term term)
13486{
13487 auto res = isl_qpolynomial_from_term(term.release());
13488 return manage(res);
13489}
13490
13491val qpolynomial::get_constant_val() const
13492{
13493 auto res = isl_qpolynomial_get_constant_val(get());
13494 return manage(res);
13495}
13496
13497space qpolynomial::get_domain_space() const
13498{
13499 auto res = isl_qpolynomial_get_domain_space(get());
13500 return manage(res);
13501}
13502
13503space qpolynomial::get_space() const
13504{
13505 auto res = isl_qpolynomial_get_space(get());
13506 return manage(res);
13507}
13508
13509qpolynomial qpolynomial::gist(set context) const
13510{
13511 auto res = isl_qpolynomial_gist(copy(), context.release());
13512 return manage(res);
13513}
13514
13515qpolynomial qpolynomial::gist_params(set context) const
13516{
13517 auto res = isl_qpolynomial_gist_params(copy(), context.release());
13518 return manage(res);
13519}
13520
13521qpolynomial qpolynomial::homogenize() const
13522{
13523 auto res = isl_qpolynomial_homogenize(copy());
13524 return manage(res);
13525}
13526
13527qpolynomial qpolynomial::infty_on_domain(space dim)
13528{
13529 auto res = isl_qpolynomial_infty_on_domain(dim.release());
13530 return manage(res);
13531}
13532
13533qpolynomial qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
13534{
13535 auto res = isl_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13536 return manage(res);
13537}
13538
13539boolean qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
13540{
13541 auto res = isl_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
13542 return manage(res);
13543}
13544
13545boolean qpolynomial::is_infty() const
13546{
13547 auto res = isl_qpolynomial_is_infty(get());
13548 return manage(res);
13549}
13550
13551boolean qpolynomial::is_nan() const
13552{
13553 auto res = isl_qpolynomial_is_nan(get());
13554 return manage(res);
13555}
13556
13557boolean qpolynomial::is_neginfty() const
13558{
13559 auto res = isl_qpolynomial_is_neginfty(get());
13560 return manage(res);
13561}
13562
13563boolean qpolynomial::is_zero() const
13564{
13565 auto res = isl_qpolynomial_is_zero(get());
13566 return manage(res);
13567}
13568
13569qpolynomial qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
13570{
13571 auto res = isl_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
13572 return manage(res);
13573}
13574
13575qpolynomial qpolynomial::mul(qpolynomial qp2) const
13576{
13577 auto res = isl_qpolynomial_mul(copy(), qp2.release());
13578 return manage(res);
13579}
13580
13581qpolynomial qpolynomial::nan_on_domain(space dim)
13582{
13583 auto res = isl_qpolynomial_nan_on_domain(dim.release());
13584 return manage(res);
13585}
13586
13587qpolynomial qpolynomial::neg() const
13588{
13589 auto res = isl_qpolynomial_neg(copy());
13590 return manage(res);
13591}
13592
13593qpolynomial qpolynomial::neginfty_on_domain(space dim)
13594{
13595 auto res = isl_qpolynomial_neginfty_on_domain(dim.release());
13596 return manage(res);
13597}
13598
13599qpolynomial qpolynomial::one_on_domain(space dim)
13600{
13601 auto res = isl_qpolynomial_one_on_domain(dim.release());
13602 return manage(res);
13603}
13604
13605boolean qpolynomial::plain_is_equal(const qpolynomial &qp2) const
13606{
13607 auto res = isl_qpolynomial_plain_is_equal(get(), qp2.get());
13608 return manage(res);
13609}
13610
13611qpolynomial qpolynomial::pow(unsigned int power) const
13612{
13613 auto res = isl_qpolynomial_pow(copy(), power);
13614 return manage(res);
13615}
13616
13617qpolynomial qpolynomial::project_domain_on_params() const
13618{
13619 auto res = isl_qpolynomial_project_domain_on_params(copy());
13620 return manage(res);
13621}
13622
13623qpolynomial qpolynomial::scale_down_val(val v) const
13624{
13625 auto res = isl_qpolynomial_scale_down_val(copy(), v.release());
13626 return manage(res);
13627}
13628
13629qpolynomial qpolynomial::scale_val(val v) const
13630{
13631 auto res = isl_qpolynomial_scale_val(copy(), v.release());
13632 return manage(res);
13633}
13634
13635int qpolynomial::sgn() const
13636{
13637 auto res = isl_qpolynomial_sgn(get());
13638 return res;
13639}
13640
13641qpolynomial qpolynomial::sub(qpolynomial qp2) const
13642{
13643 auto res = isl_qpolynomial_sub(copy(), qp2.release());
13644 return manage(res);
13645}
13646
13647qpolynomial qpolynomial::val_on_domain(space space, val val)
13648{
13649 auto res = isl_qpolynomial_val_on_domain(space.release(), val.release());
13650 return manage(res);
13651}
13652
13653qpolynomial qpolynomial::var_on_domain(space dim, isl::dim type, unsigned int pos)
13654{
13655 auto res = isl_qpolynomial_var_on_domain(dim.release(), static_cast<enum isl_dim_type>(type), pos);
13656 return manage(res);
13657}
13658
13659qpolynomial qpolynomial::zero_on_domain(space dim)
13660{
13661 auto res = isl_qpolynomial_zero_on_domain(dim.release());
13662 return manage(res);
13663}
13664
13665// implementations for isl::schedule
13666schedule manage(__isl_take isl_schedule *ptr) {
13667 return schedule(ptr);
13668}
13669schedule manage_copy(__isl_keep isl_schedule *ptr) {
13670 ptr = isl_schedule_copy(ptr);
13671 return schedule(ptr);
13672}
13673
13674schedule::schedule()
13675 : ptr(nullptr) {}
13676
13677schedule::schedule(const schedule &obj)
13678 : ptr(nullptr)
13679{
13680 ptr = obj.copy();
13681}
13682schedule::schedule(std::nullptr_t)
13683 : ptr(nullptr) {}
13684
13685
13686schedule::schedule(__isl_take isl_schedule *ptr)
13687 : ptr(ptr) {}
13688
13689schedule::schedule(ctx ctx, const std::string &str)
13690{
13691 auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
13692 ptr = res;
13693}
13694
13695schedule &schedule::operator=(schedule obj) {
13696 std::swap(this->ptr, obj.ptr);
13697 return *this;
13698}
13699
13700schedule::~schedule() {
13701 if (ptr)
13702 isl_schedule_free(ptr);
13703}
13704
13705__isl_give isl_schedule *schedule::copy() const & {
13706 return isl_schedule_copy(ptr);
13707}
13708
13709__isl_keep isl_schedule *schedule::get() const {
13710 return ptr;
13711}
13712
13713__isl_give isl_schedule *schedule::release() {
13714 isl_schedule *tmp = ptr;
13715 ptr = nullptr;
13716 return tmp;
13717}
13718
13719bool schedule::is_null() const {
13720 return ptr == nullptr;
13721}
13722schedule::operator bool() const {
13723 return !is_null();
13724}
13725
13726
13727ctx schedule::get_ctx() const {
13728 return ctx(isl_schedule_get_ctx(ptr));
13729}
13730std::string schedule::to_str() const {
13731 char *Tmp = isl_schedule_to_str(get());
13732 if (!Tmp)
13733 return "";
13734 std::string S(Tmp);
13735 free(Tmp);
13736 return S;
13737}
13738
13739
13740void schedule::dump() const {
13741 isl_schedule_dump(get());
13742}
13743
13744
13745schedule schedule::align_params(space space) const
13746{
13747 auto res = isl_schedule_align_params(copy(), space.release());
13748 return manage(res);
13749}
13750
13751schedule schedule::empty(space space)
13752{
13753 auto res = isl_schedule_empty(space.release());
13754 return manage(res);
13755}
13756
13757schedule schedule::from_domain(union_set domain)
13758{
13759 auto res = isl_schedule_from_domain(domain.release());
13760 return manage(res);
13761}
13762
13763union_set schedule::get_domain() const
13764{
13765 auto res = isl_schedule_get_domain(get());
13766 return manage(res);
13767}
13768
13769union_map schedule::get_map() const
13770{
13771 auto res = isl_schedule_get_map(get());
13772 return manage(res);
13773}
13774
13775schedule_node schedule::get_root() const
13776{
13777 auto res = isl_schedule_get_root(get());
13778 return manage(res);
13779}
13780
13781schedule schedule::gist_domain_params(set context) const
13782{
13783 auto res = isl_schedule_gist_domain_params(copy(), context.release());
13784 return manage(res);
13785}
13786
13787schedule schedule::insert_context(set context) const
13788{
13789 auto res = isl_schedule_insert_context(copy(), context.release());
13790 return manage(res);
13791}
13792
13793schedule schedule::insert_guard(set guard) const
13794{
13795 auto res = isl_schedule_insert_guard(copy(), guard.release());
13796 return manage(res);
13797}
13798
13799schedule schedule::insert_partial_schedule(multi_union_pw_aff partial) const
13800{
13801 auto res = isl_schedule_insert_partial_schedule(copy(), partial.release());
13802 return manage(res);
13803}
13804
13805schedule schedule::intersect_domain(union_set domain) const
13806{
13807 auto res = isl_schedule_intersect_domain(copy(), domain.release());
13808 return manage(res);
13809}
13810
13811boolean schedule::plain_is_equal(const schedule &schedule2) const
13812{
13813 auto res = isl_schedule_plain_is_equal(get(), schedule2.get());
13814 return manage(res);
13815}
13816
13817schedule schedule::pullback(union_pw_multi_aff upma) const
13818{
13819 auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
13820 return manage(res);
13821}
13822
13823schedule schedule::reset_user() const
13824{
13825 auto res = isl_schedule_reset_user(copy());
13826 return manage(res);
13827}
13828
13829schedule schedule::sequence(schedule schedule2) const
13830{
13831 auto res = isl_schedule_sequence(copy(), schedule2.release());
13832 return manage(res);
13833}
13834
13835// implementations for isl::schedule_constraints
13836schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
13837 return schedule_constraints(ptr);
13838}
13839schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
13840 ptr = isl_schedule_constraints_copy(ptr);
13841 return schedule_constraints(ptr);
13842}
13843
13844schedule_constraints::schedule_constraints()
13845 : ptr(nullptr) {}
13846
13847schedule_constraints::schedule_constraints(const schedule_constraints &obj)
13848 : ptr(nullptr)
13849{
13850 ptr = obj.copy();
13851}
13852schedule_constraints::schedule_constraints(std::nullptr_t)
13853 : ptr(nullptr) {}
13854
13855
13856schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
13857 : ptr(ptr) {}
13858
13859schedule_constraints::schedule_constraints(ctx ctx, const std::string &str)
13860{
13861 auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
13862 ptr = res;
13863}
13864
13865schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
13866 std::swap(this->ptr, obj.ptr);
13867 return *this;
13868}
13869
13870schedule_constraints::~schedule_constraints() {
13871 if (ptr)
13872 isl_schedule_constraints_free(ptr);
13873}
13874
13875__isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
13876 return isl_schedule_constraints_copy(ptr);
13877}
13878
13879__isl_keep isl_schedule_constraints *schedule_constraints::get() const {
13880 return ptr;
13881}
13882
13883__isl_give isl_schedule_constraints *schedule_constraints::release() {
13884 isl_schedule_constraints *tmp = ptr;
13885 ptr = nullptr;
13886 return tmp;
13887}
13888
13889bool schedule_constraints::is_null() const {
13890 return ptr == nullptr;
13891}
13892schedule_constraints::operator bool() const {
13893 return !is_null();
13894}
13895
13896
13897ctx schedule_constraints::get_ctx() const {
13898 return ctx(isl_schedule_constraints_get_ctx(ptr));
13899}
13900std::string schedule_constraints::to_str() const {
13901 char *Tmp = isl_schedule_constraints_to_str(get());
13902 if (!Tmp)
13903 return "";
13904 std::string S(Tmp);
13905 free(Tmp);
13906 return S;
13907}
13908
13909
13910void schedule_constraints::dump() const {
13911 isl_schedule_constraints_dump(get());
13912}
13913
13914
13915schedule_constraints schedule_constraints::apply(union_map umap) const
13916{
13917 auto res = isl_schedule_constraints_apply(copy(), umap.release());
13918 return manage(res);
13919}
13920
13921schedule schedule_constraints::compute_schedule() const
13922{
13923 auto res = isl_schedule_constraints_compute_schedule(copy());
13924 return manage(res);
13925}
13926
13927union_map schedule_constraints::get_coincidence() const
13928{
13929 auto res = isl_schedule_constraints_get_coincidence(get());
13930 return manage(res);
13931}
13932
13933union_map schedule_constraints::get_conditional_validity() const
13934{
13935 auto res = isl_schedule_constraints_get_conditional_validity(get());
13936 return manage(res);
13937}
13938
13939union_map schedule_constraints::get_conditional_validity_condition() const
13940{
13941 auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
13942 return manage(res);
13943}
13944
13945set schedule_constraints::get_context() const
13946{
13947 auto res = isl_schedule_constraints_get_context(get());
13948 return manage(res);
13949}
13950
13951union_set schedule_constraints::get_domain() const
13952{
13953 auto res = isl_schedule_constraints_get_domain(get());
13954 return manage(res);
13955}
13956
13957union_map schedule_constraints::get_proximity() const
13958{
13959 auto res = isl_schedule_constraints_get_proximity(get());
13960 return manage(res);
13961}
13962
13963union_map schedule_constraints::get_validity() const
13964{
13965 auto res = isl_schedule_constraints_get_validity(get());
13966 return manage(res);
13967}
13968
13969schedule_constraints schedule_constraints::on_domain(union_set domain)
13970{
13971 auto res = isl_schedule_constraints_on_domain(domain.release());
13972 return manage(res);
13973}
13974
13975schedule_constraints schedule_constraints::set_coincidence(union_map coincidence) const
13976{
13977 auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
13978 return manage(res);
13979}
13980
13981schedule_constraints schedule_constraints::set_conditional_validity(union_map condition, union_map validity) const
13982{
13983 auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
13984 return manage(res);
13985}
13986
13987schedule_constraints schedule_constraints::set_context(set context) const
13988{
13989 auto res = isl_schedule_constraints_set_context(copy(), context.release());
13990 return manage(res);
13991}
13992
13993schedule_constraints schedule_constraints::set_proximity(union_map proximity) const
13994{
13995 auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
13996 return manage(res);
13997}
13998
13999schedule_constraints schedule_constraints::set_validity(union_map validity) const
14000{
14001 auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
14002 return manage(res);
14003}
14004
14005// implementations for isl::schedule_node
14006schedule_node manage(__isl_take isl_schedule_node *ptr) {
14007 return schedule_node(ptr);
14008}
14009schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
14010 ptr = isl_schedule_node_copy(ptr);
14011 return schedule_node(ptr);
14012}
14013
14014schedule_node::schedule_node()
14015 : ptr(nullptr) {}
14016
14017schedule_node::schedule_node(const schedule_node &obj)
14018 : ptr(nullptr)
14019{
14020 ptr = obj.copy();
14021}
14022schedule_node::schedule_node(std::nullptr_t)
14023 : ptr(nullptr) {}
14024
14025
14026schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
14027 : ptr(ptr) {}
14028
14029
14030schedule_node &schedule_node::operator=(schedule_node obj) {
14031 std::swap(this->ptr, obj.ptr);
14032 return *this;
14033}
14034
14035schedule_node::~schedule_node() {
14036 if (ptr)
14037 isl_schedule_node_free(ptr);
14038}
14039
14040__isl_give isl_schedule_node *schedule_node::copy() const & {
14041 return isl_schedule_node_copy(ptr);
14042}
14043
14044__isl_keep isl_schedule_node *schedule_node::get() const {
14045 return ptr;
14046}
14047
14048__isl_give isl_schedule_node *schedule_node::release() {
14049 isl_schedule_node *tmp = ptr;
14050 ptr = nullptr;
14051 return tmp;
14052}
14053
14054bool schedule_node::is_null() const {
14055 return ptr == nullptr;
14056}
14057schedule_node::operator bool() const {
14058 return !is_null();
14059}
14060
14061
14062ctx schedule_node::get_ctx() const {
14063 return ctx(isl_schedule_node_get_ctx(ptr));
14064}
14065std::string schedule_node::to_str() const {
14066 char *Tmp = isl_schedule_node_to_str(get());
14067 if (!Tmp)
14068 return "";
14069 std::string S(Tmp);
14070 free(Tmp);
14071 return S;
14072}
14073
14074
14075void schedule_node::dump() const {
14076 isl_schedule_node_dump(get());
14077}
14078
14079
14080schedule_node schedule_node::align_params(space space) const
14081{
14082 auto res = isl_schedule_node_align_params(copy(), space.release());
14083 return manage(res);
14084}
14085
14086schedule_node schedule_node::ancestor(int generation) const
14087{
14088 auto res = isl_schedule_node_ancestor(copy(), generation);
14089 return manage(res);
14090}
14091
14092boolean schedule_node::band_member_get_coincident(int pos) const
14093{
14094 auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
14095 return manage(res);
14096}
14097
14098schedule_node schedule_node::band_member_set_coincident(int pos, int coincident) const
14099{
14100 auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
14101 return manage(res);
14102}
14103
14104schedule_node schedule_node::band_set_ast_build_options(union_set options) const
14105{
14106 auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
14107 return manage(res);
14108}
14109
14110schedule_node schedule_node::child(int pos) const
14111{
14112 auto res = isl_schedule_node_child(copy(), pos);
14113 return manage(res);
14114}
14115
14116set schedule_node::context_get_context() const
14117{
14118 auto res = isl_schedule_node_context_get_context(get());
14119 return manage(res);
14120}
14121
14122schedule_node schedule_node::cut() const
14123{
14124 auto res = isl_schedule_node_cut(copy());
14125 return manage(res);
14126}
14127
14128union_set schedule_node::domain_get_domain() const
14129{
14130 auto res = isl_schedule_node_domain_get_domain(get());
14131 return manage(res);
14132}
14133
14134union_pw_multi_aff schedule_node::expansion_get_contraction() const
14135{
14136 auto res = isl_schedule_node_expansion_get_contraction(get());
14137 return manage(res);
14138}
14139
14140union_map schedule_node::expansion_get_expansion() const
14141{
14142 auto res = isl_schedule_node_expansion_get_expansion(get());
14143 return manage(res);
14144}
14145
14146union_map schedule_node::extension_get_extension() const
14147{
14148 auto res = isl_schedule_node_extension_get_extension(get());
14149 return manage(res);
14150}
14151
14152union_set schedule_node::filter_get_filter() const
14153{
14154 auto res = isl_schedule_node_filter_get_filter(get());
14155 return manage(res);
14156}
14157
14158schedule_node schedule_node::first_child() const
14159{
14160 auto res = isl_schedule_node_first_child(copy());
14161 return manage(res);
14162}
14163
14164stat schedule_node::foreach_ancestor_top_down(const std::function<stat(schedule_node)> &fn) const
14165{
14166 struct fn_data {
14167 const std::function<stat(schedule_node)> *func;
14168 } fn_data = { &fn };
14169 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
14170 auto *data = static_cast<struct fn_data *>(arg_1);
14171 stat ret = (*data->func)(manage_copy(arg_0));
14172 return ret.release();
14173 };
14174 auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
14175 return manage(res);
14176}
14177
14178schedule_node schedule_node::from_domain(union_set domain)
14179{
14180 auto res = isl_schedule_node_from_domain(domain.release());
14181 return manage(res);
14182}
14183
14184schedule_node schedule_node::from_extension(union_map extension)
14185{
14186 auto res = isl_schedule_node_from_extension(extension.release());
14187 return manage(res);
14188}
14189
14190int schedule_node::get_ancestor_child_position(const schedule_node &ancestor) const
14191{
14192 auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
14193 return res;
14194}
14195
14196schedule_node schedule_node::get_child(int pos) const
14197{
14198 auto res = isl_schedule_node_get_child(get(), pos);
14199 return manage(res);
14200}
14201
14202int schedule_node::get_child_position() const
14203{
14204 auto res = isl_schedule_node_get_child_position(get());
14205 return res;
14206}
14207
14208union_set schedule_node::get_domain() const
14209{
14210 auto res = isl_schedule_node_get_domain(get());
14211 return manage(res);
14212}
14213
14214multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
14215{
14216 auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
14217 return manage(res);
14218}
14219
14220union_map schedule_node::get_prefix_schedule_relation() const
14221{
14222 auto res = isl_schedule_node_get_prefix_schedule_relation(get());
14223 return manage(res);
14224}
14225
14226union_map schedule_node::get_prefix_schedule_union_map() const
14227{
14228 auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
14229 return manage(res);
14230}
14231
14232union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
14233{
14234 auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
14235 return manage(res);
14236}
14237
14238schedule schedule_node::get_schedule() const
14239{
14240 auto res = isl_schedule_node_get_schedule(get());
14241 return manage(res);
14242}
14243
14244int schedule_node::get_schedule_depth() const
14245{
14246 auto res = isl_schedule_node_get_schedule_depth(get());
14247 return res;
14248}
14249
14250schedule_node schedule_node::get_shared_ancestor(const schedule_node &node2) const
14251{
14252 auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
14253 return manage(res);
14254}
14255
14256union_pw_multi_aff schedule_node::get_subtree_contraction() const
14257{
14258 auto res = isl_schedule_node_get_subtree_contraction(get());
14259 return manage(res);
14260}
14261
14262union_map schedule_node::get_subtree_expansion() const
14263{
14264 auto res = isl_schedule_node_get_subtree_expansion(get());
14265 return manage(res);
14266}
14267
14268union_map schedule_node::get_subtree_schedule_union_map() const
14269{
14270 auto res = isl_schedule_node_get_subtree_schedule_union_map(get());
14271 return manage(res);
14272}
14273
14274int schedule_node::get_tree_depth() const
14275{
14276 auto res = isl_schedule_node_get_tree_depth(get());
14277 return res;
14278}
14279
14280union_set schedule_node::get_universe_domain() const
14281{
14282 auto res = isl_schedule_node_get_universe_domain(get());
14283 return manage(res);
14284}
14285
14286schedule_node schedule_node::graft_after(schedule_node graft) const
14287{
14288 auto res = isl_schedule_node_graft_after(copy(), graft.release());
14289 return manage(res);
14290}
14291
14292schedule_node schedule_node::graft_before(schedule_node graft) const
14293{
14294 auto res = isl_schedule_node_graft_before(copy(), graft.release());
14295 return manage(res);
14296}
14297
14298schedule_node schedule_node::group(id group_id) const
14299{
14300 auto res = isl_schedule_node_group(copy(), group_id.release());
14301 return manage(res);
14302}
14303
14304set schedule_node::guard_get_guard() const
14305{
14306 auto res = isl_schedule_node_guard_get_guard(get());
14307 return manage(res);
14308}
14309
14310boolean schedule_node::has_children() const
14311{
14312 auto res = isl_schedule_node_has_children(get());
14313 return manage(res);
14314}
14315
14316boolean schedule_node::has_next_sibling() const
14317{
14318 auto res = isl_schedule_node_has_next_sibling(get());
14319 return manage(res);
14320}
14321
14322boolean schedule_node::has_parent() const
14323{
14324 auto res = isl_schedule_node_has_parent(get());
14325 return manage(res);
14326}
14327
14328boolean schedule_node::has_previous_sibling() const
14329{
14330 auto res = isl_schedule_node_has_previous_sibling(get());
14331 return manage(res);
14332}
14333
14334schedule_node schedule_node::insert_context(set context) const
14335{
14336 auto res = isl_schedule_node_insert_context(copy(), context.release());
14337 return manage(res);
14338}
14339
14340schedule_node schedule_node::insert_filter(union_set filter) const
14341{
14342 auto res = isl_schedule_node_insert_filter(copy(), filter.release());
14343 return manage(res);
14344}
14345
14346schedule_node schedule_node::insert_guard(set context) const
14347{
14348 auto res = isl_schedule_node_insert_guard(copy(), context.release());
14349 return manage(res);
14350}
14351
14352schedule_node schedule_node::insert_mark(id mark) const
14353{
14354 auto res = isl_schedule_node_insert_mark(copy(), mark.release());
14355 return manage(res);
14356}
14357
14358schedule_node schedule_node::insert_partial_schedule(multi_union_pw_aff schedule) const
14359{
14360 auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
14361 return manage(res);
14362}
14363
14364schedule_node schedule_node::insert_sequence(union_set_list filters) const
14365{
14366 auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
14367 return manage(res);
14368}
14369
14370schedule_node schedule_node::insert_set(union_set_list filters) const
14371{
14372 auto res = isl_schedule_node_insert_set(copy(), filters.release());
14373 return manage(res);
14374}
14375
14376boolean schedule_node::is_equal(const schedule_node &node2) const
14377{
14378 auto res = isl_schedule_node_is_equal(get(), node2.get());
14379 return manage(res);
14380}
14381
14382boolean schedule_node::is_subtree_anchored() const
14383{
14384 auto res = isl_schedule_node_is_subtree_anchored(get());
14385 return manage(res);
14386}
14387
14388id schedule_node::mark_get_id() const
14389{
14390 auto res = isl_schedule_node_mark_get_id(get());
14391 return manage(res);
14392}
14393
14394int schedule_node::n_children() const
14395{
14396 auto res = isl_schedule_node_n_children(get());
14397 return res;
14398}
14399
14400schedule_node schedule_node::next_sibling() const
14401{
14402 auto res = isl_schedule_node_next_sibling(copy());
14403 return manage(res);
14404}
14405
14406schedule_node schedule_node::order_after(union_set filter) const
14407{
14408 auto res = isl_schedule_node_order_after(copy(), filter.release());
14409 return manage(res);
14410}
14411
14412schedule_node schedule_node::order_before(union_set filter) const
14413{
14414 auto res = isl_schedule_node_order_before(copy(), filter.release());
14415 return manage(res);
14416}
14417
14418schedule_node schedule_node::parent() const
14419{
14420 auto res = isl_schedule_node_parent(copy());
14421 return manage(res);
14422}
14423
14424schedule_node schedule_node::previous_sibling() const
14425{
14426 auto res = isl_schedule_node_previous_sibling(copy());
14427 return manage(res);
14428}
14429
14430schedule_node schedule_node::reset_user() const
14431{
14432 auto res = isl_schedule_node_reset_user(copy());
14433 return manage(res);
14434}
14435
14436schedule_node schedule_node::root() const
14437{
14438 auto res = isl_schedule_node_root(copy());
14439 return manage(res);
14440}
14441
14442schedule_node schedule_node::sequence_splice_child(int pos) const
14443{
14444 auto res = isl_schedule_node_sequence_splice_child(copy(), pos);
14445 return manage(res);
14446}
14447
14448// implementations for isl::set
14449set manage(__isl_take isl_set *ptr) {
14450 return set(ptr);
14451}
14452set manage_copy(__isl_keep isl_set *ptr) {
14453 ptr = isl_set_copy(ptr);
14454 return set(ptr);
14455}
14456
14457set::set()
14458 : ptr(nullptr) {}
14459
14460set::set(const set &obj)
14461 : ptr(nullptr)
14462{
14463 ptr = obj.copy();
14464}
14465set::set(std::nullptr_t)
14466 : ptr(nullptr) {}
14467
14468
14469set::set(__isl_take isl_set *ptr)
14470 : ptr(ptr) {}
14471
14472set::set(ctx ctx, const std::string &str)
14473{
14474 auto res = isl_set_read_from_str(ctx.release(), str.c_str());
14475 ptr = res;
14476}
14477set::set(basic_set bset)
14478{
14479 auto res = isl_set_from_basic_set(bset.release());
14480 ptr = res;
14481}
14482set::set(point pnt)
14483{
14484 auto res = isl_set_from_point(pnt.release());
14485 ptr = res;
14486}
14487set::set(union_set uset)
14488{
14489 auto res = isl_set_from_union_set(uset.release());
14490 ptr = res;
14491}
14492
14493set &set::operator=(set obj) {
14494 std::swap(this->ptr, obj.ptr);
14495 return *this;
14496}
14497
14498set::~set() {
14499 if (ptr)
14500 isl_set_free(ptr);
14501}
14502
14503__isl_give isl_set *set::copy() const & {
14504 return isl_set_copy(ptr);
14505}
14506
14507__isl_keep isl_set *set::get() const {
14508 return ptr;
14509}
14510
14511__isl_give isl_set *set::release() {
14512 isl_set *tmp = ptr;
14513 ptr = nullptr;
14514 return tmp;
14515}
14516
14517bool set::is_null() const {
14518 return ptr == nullptr;
14519}
14520set::operator bool() const {
14521 return !is_null();
14522}
14523
14524
14525ctx set::get_ctx() const {
14526 return ctx(isl_set_get_ctx(ptr));
14527}
14528std::string set::to_str() const {
14529 char *Tmp = isl_set_to_str(get());
14530 if (!Tmp)
14531 return "";
14532 std::string S(Tmp);
14533 free(Tmp);
14534 return S;
14535}
14536
14537
14538void set::dump() const {
14539 isl_set_dump(get());
14540}
14541
14542
14543set set::add_constraint(constraint constraint) const
14544{
14545 auto res = isl_set_add_constraint(copy(), constraint.release());
14546 return manage(res);
14547}
14548
14549set set::add_dims(isl::dim type, unsigned int n) const
14550{
14551 auto res = isl_set_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
14552 return manage(res);
14553}
14554
14555basic_set set::affine_hull() const
14556{
14557 auto res = isl_set_affine_hull(copy());
14558 return manage(res);
14559}
14560
14561set set::align_params(space model) const
14562{
14563 auto res = isl_set_align_params(copy(), model.release());
14564 return manage(res);
14565}
14566
14567set set::apply(map map) const
14568{
14569 auto res = isl_set_apply(copy(), map.release());
14570 return manage(res);
14571}
14572
14573basic_set set::bounded_simple_hull() const
14574{
14575 auto res = isl_set_bounded_simple_hull(copy());
14576 return manage(res);
14577}
14578
14579set set::box_from_points(point pnt1, point pnt2)
14580{
14581 auto res = isl_set_box_from_points(pnt1.release(), pnt2.release());
14582 return manage(res);
14583}
14584
14585set set::coalesce() const
14586{
14587 auto res = isl_set_coalesce(copy());
14588 return manage(res);
14589}
14590
14591basic_set set::coefficients() const
14592{
14593 auto res = isl_set_coefficients(copy());
14594 return manage(res);
14595}
14596
14597set set::complement() const
14598{
14599 auto res = isl_set_complement(copy());
14600 return manage(res);
14601}
14602
14603basic_set set::convex_hull() const
14604{
14605 auto res = isl_set_convex_hull(copy());
14606 return manage(res);
14607}
14608
14609val set::count_val() const
14610{
14611 auto res = isl_set_count_val(get());
14612 return manage(res);
14613}
14614
14615set set::detect_equalities() const
14616{
14617 auto res = isl_set_detect_equalities(copy());
14618 return manage(res);
14619}
14620
14621unsigned int set::dim(isl::dim type) const
14622{
14623 auto res = isl_set_dim(get(), static_cast<enum isl_dim_type>(type));
14624 return res;
14625}
14626
14627boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
14628{
14629 auto res = isl_set_dim_has_any_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14630 return manage(res);
14631}
14632
14633boolean set::dim_has_any_upper_bound(isl::dim type, unsigned int pos) const
14634{
14635 auto res = isl_set_dim_has_any_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14636 return manage(res);
14637}
14638
14639boolean set::dim_has_lower_bound(isl::dim type, unsigned int pos) const
14640{
14641 auto res = isl_set_dim_has_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14642 return manage(res);
14643}
14644
14645boolean set::dim_has_upper_bound(isl::dim type, unsigned int pos) const
14646{
14647 auto res = isl_set_dim_has_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
14648 return manage(res);
14649}
14650
14651boolean set::dim_is_bounded(isl::dim type, unsigned int pos) const
14652{
14653 auto res = isl_set_dim_is_bounded(get(), static_cast<enum isl_dim_type>(type), pos);
14654 return manage(res);
14655}
14656
14657pw_aff set::dim_max(int pos) const
14658{
14659 auto res = isl_set_dim_max(copy(), pos);
14660 return manage(res);
14661}
14662
14663pw_aff set::dim_min(int pos) const
14664{
14665 auto res = isl_set_dim_min(copy(), pos);
14666 return manage(res);
14667}
14668
14669set set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
14670{
14671 auto res = isl_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14672 return manage(res);
14673}
14674
14675set set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
14676{
14677 auto res = isl_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14678 return manage(res);
14679}
14680
14681set set::drop_unused_params() const
14682{
14683 auto res = isl_set_drop_unused_params(copy());
14684 return manage(res);
14685}
14686
14687set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
14688{
14689 auto res = isl_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
14690 return manage(res);
14691}
14692
14693set set::empty(space space)
14694{
14695 auto res = isl_set_empty(space.release());
14696 return manage(res);
14697}
14698
14699set set::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
14700{
14701 auto res = isl_set_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
14702 return manage(res);
14703}
14704
14705int set::find_dim_by_id(isl::dim type, const id &id) const
14706{
14707 auto res = isl_set_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
14708 return res;
14709}
14710
14711int set::find_dim_by_name(isl::dim type, const std::string &name) const
14712{
14713 auto res = isl_set_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
14714 return res;
14715}
14716
14717set set::fix_si(isl::dim type, unsigned int pos, int value) const
14718{
14719 auto res = isl_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
14720 return manage(res);
14721}
14722
14723set set::fix_val(isl::dim type, unsigned int pos, val v) const
14724{
14725 auto res = isl_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
14726 return manage(res);
14727}
14728
14729set set::flat_product(set set2) const
14730{
14731 auto res = isl_set_flat_product(copy(), set2.release());
14732 return manage(res);
14733}
14734
14735set set::flatten() const
14736{
14737 auto res = isl_set_flatten(copy());
14738 return manage(res);
14739}
14740
14741map set::flatten_map() const
14742{
14743 auto res = isl_set_flatten_map(copy());
14744 return manage(res);
14745}
14746
14747int set::follows_at(const set &set2, int pos) const
14748{
14749 auto res = isl_set_follows_at(get(), set2.get(), pos);
14750 return res;
14751}
14752
14753stat set::foreach_basic_set(const std::function<stat(basic_set)> &fn) const
14754{
14755 struct fn_data {
14756 const std::function<stat(basic_set)> *func;
14757 } fn_data = { &fn };
14758 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
14759 auto *data = static_cast<struct fn_data *>(arg_1);
14760 stat ret = (*data->func)(manage(arg_0));
14761 return ret.release();
14762 };
14763 auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
14764 return manage(res);
14765}
14766
14767stat set::foreach_point(const std::function<stat(point)> &fn) const
14768{
14769 struct fn_data {
14770 const std::function<stat(point)> *func;
14771 } fn_data = { &fn };
14772 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
14773 auto *data = static_cast<struct fn_data *>(arg_1);
14774 stat ret = (*data->func)(manage(arg_0));
14775 return ret.release();
14776 };
14777 auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
14778 return manage(res);
14779}
14780
14781set set::from_multi_aff(multi_aff ma)
14782{
14783 auto res = isl_set_from_multi_aff(ma.release());
14784 return manage(res);
14785}
14786
14787set set::from_multi_pw_aff(multi_pw_aff mpa)
14788{
14789 auto res = isl_set_from_multi_pw_aff(mpa.release());
14790 return manage(res);
14791}
14792
14793set set::from_params() const
14794{
14795 auto res = isl_set_from_params(copy());
14796 return manage(res);
14797}
14798
14799set set::from_pw_aff(pw_aff pwaff)
14800{
14801 auto res = isl_set_from_pw_aff(pwaff.release());
14802 return manage(res);
14803}
14804
14805set set::from_pw_multi_aff(pw_multi_aff pma)
14806{
14807 auto res = isl_set_from_pw_multi_aff(pma.release());
14808 return manage(res);
14809}
14810
14811basic_set_list set::get_basic_set_list() const
14812{
14813 auto res = isl_set_get_basic_set_list(get());
14814 return manage(res);
14815}
14816
14817id set::get_dim_id(isl::dim type, unsigned int pos) const
14818{
14819 auto res = isl_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
14820 return manage(res);
14821}
14822
14823std::string set::get_dim_name(isl::dim type, unsigned int pos) const
14824{
14825 auto res = isl_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
14826 std::string tmp(res);
14827 return tmp;
14828}
14829
14830space set::get_space() const
14831{
14832 auto res = isl_set_get_space(get());
14833 return manage(res);
14834}
14835
14836val set::get_stride(int pos) const
14837{
14838 auto res = isl_set_get_stride(get(), pos);
14839 return manage(res);
14840}
14841
14842id set::get_tuple_id() const
14843{
14844 auto res = isl_set_get_tuple_id(get());
14845 return manage(res);
14846}
14847
14848std::string set::get_tuple_name() const
14849{
14850 auto res = isl_set_get_tuple_name(get());
14851 std::string tmp(res);
14852 return tmp;
14853}
14854
14855set set::gist(set context) const
14856{
14857 auto res = isl_set_gist(copy(), context.release());
14858 return manage(res);
14859}
14860
14861set set::gist_basic_set(basic_set context) const
14862{
14863 auto res = isl_set_gist_basic_set(copy(), context.release());
14864 return manage(res);
14865}
14866
14867set set::gist_params(set context) const
14868{
14869 auto res = isl_set_gist_params(copy(), context.release());
14870 return manage(res);
14871}
14872
14873boolean set::has_dim_id(isl::dim type, unsigned int pos) const
14874{
14875 auto res = isl_set_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
14876 return manage(res);
14877}
14878
14879boolean set::has_dim_name(isl::dim type, unsigned int pos) const
14880{
14881 auto res = isl_set_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
14882 return manage(res);
14883}
14884
14885boolean set::has_equal_space(const set &set2) const
14886{
14887 auto res = isl_set_has_equal_space(get(), set2.get());
14888 return manage(res);
14889}
14890
14891boolean set::has_tuple_id() const
14892{
14893 auto res = isl_set_has_tuple_id(get());
14894 return manage(res);
14895}
14896
14897boolean set::has_tuple_name() const
14898{
14899 auto res = isl_set_has_tuple_name(get());
14900 return manage(res);
14901}
14902
14903map set::identity() const
14904{
14905 auto res = isl_set_identity(copy());
14906 return manage(res);
14907}
14908
14909pw_aff set::indicator_function() const
14910{
14911 auto res = isl_set_indicator_function(copy());
14912 return manage(res);
14913}
14914
14915set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
14916{
14917 auto res = isl_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
14918 return manage(res);
14919}
14920
14921set set::intersect(set set2) const
14922{
14923 auto res = isl_set_intersect(copy(), set2.release());
14924 return manage(res);
14925}
14926
14927set set::intersect_params(set params) const
14928{
14929 auto res = isl_set_intersect_params(copy(), params.release());
14930 return manage(res);
14931}
14932
14933boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
14934{
14935 auto res = isl_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
14936 return manage(res);
14937}
14938
14939boolean set::is_bounded() const
14940{
14941 auto res = isl_set_is_bounded(get());
14942 return manage(res);
14943}
14944
14945boolean set::is_box() const
14946{
14947 auto res = isl_set_is_box(get());
14948 return manage(res);
14949}
14950
14951boolean set::is_disjoint(const set &set2) const
14952{
14953 auto res = isl_set_is_disjoint(get(), set2.get());
14954 return manage(res);
14955}
14956
14957boolean set::is_empty() const
14958{
14959 auto res = isl_set_is_empty(get());
14960 return manage(res);
14961}
14962
14963boolean set::is_equal(const set &set2) const
14964{
14965 auto res = isl_set_is_equal(get(), set2.get());
14966 return manage(res);
14967}
14968
14969boolean set::is_params() const
14970{
14971 auto res = isl_set_is_params(get());
14972 return manage(res);
14973}
14974
14975boolean set::is_singleton() const
14976{
14977 auto res = isl_set_is_singleton(get());
14978 return manage(res);
14979}
14980
14981boolean set::is_strict_subset(const set &set2) const
14982{
14983 auto res = isl_set_is_strict_subset(get(), set2.get());
14984 return manage(res);
14985}
14986
14987boolean set::is_subset(const set &set2) const
14988{
14989 auto res = isl_set_is_subset(get(), set2.get());
14990 return manage(res);
14991}
14992
14993boolean set::is_wrapping() const
14994{
14995 auto res = isl_set_is_wrapping(get());
14996 return manage(res);
14997}
14998
14999map set::lex_ge_set(set set2) const
15000{
15001 auto res = isl_set_lex_ge_set(copy(), set2.release());
15002 return manage(res);
15003}
15004
15005map set::lex_gt_set(set set2) const
15006{
15007 auto res = isl_set_lex_gt_set(copy(), set2.release());
15008 return manage(res);
15009}
15010
15011map set::lex_le_set(set set2) const
15012{
15013 auto res = isl_set_lex_le_set(copy(), set2.release());
15014 return manage(res);
15015}
15016
15017map set::lex_lt_set(set set2) const
15018{
15019 auto res = isl_set_lex_lt_set(copy(), set2.release());
15020 return manage(res);
15021}
15022
15023set set::lexmax() const
15024{
15025 auto res = isl_set_lexmax(copy());
15026 return manage(res);
15027}
15028
15029pw_multi_aff set::lexmax_pw_multi_aff() const
15030{
15031 auto res = isl_set_lexmax_pw_multi_aff(copy());
15032 return manage(res);
15033}
15034
15035set set::lexmin() const
15036{
15037 auto res = isl_set_lexmin(copy());
15038 return manage(res);
15039}
15040
15041pw_multi_aff set::lexmin_pw_multi_aff() const
15042{
15043 auto res = isl_set_lexmin_pw_multi_aff(copy());
15044 return manage(res);
15045}
15046
15047set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
15048{
15049 auto res = isl_set_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
15050 return manage(res);
15051}
15052
15053set set::lower_bound_val(isl::dim type, unsigned int pos, val value) const
15054{
15055 auto res = isl_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
15056 return manage(res);
15057}
15058
15059val set::max_val(const aff &obj) const
15060{
15061 auto res = isl_set_max_val(get(), obj.get());
15062 return manage(res);
15063}
15064
15065val set::min_val(const aff &obj) const
15066{
15067 auto res = isl_set_min_val(get(), obj.get());
15068 return manage(res);
15069}
15070
15071set set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
15072{
15073 auto res = isl_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
15074 return manage(res);
15075}
15076
15077int set::n_basic_set() const
15078{
15079 auto res = isl_set_n_basic_set(get());
15080 return res;
15081}
15082
15083unsigned int set::n_dim() const
15084{
15085 auto res = isl_set_n_dim(get());
15086 return res;
15087}
15088
15089set set::nat_universe(space dim)
15090{
15091 auto res = isl_set_nat_universe(dim.release());
15092 return manage(res);
15093}
15094
15095set set::neg() const
15096{
15097 auto res = isl_set_neg(copy());
15098 return manage(res);
15099}
15100
15101set set::params() const
15102{
15103 auto res = isl_set_params(copy());
15104 return manage(res);
15105}
15106
15107int set::plain_cmp(const set &set2) const
15108{
15109 auto res = isl_set_plain_cmp(get(), set2.get());
15110 return res;
15111}
15112
15113val set::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
15114{
15115 auto res = isl_set_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
15116 return manage(res);
15117}
15118
15119boolean set::plain_is_disjoint(const set &set2) const
15120{
15121 auto res = isl_set_plain_is_disjoint(get(), set2.get());
15122 return manage(res);
15123}
15124
15125boolean set::plain_is_empty() const
15126{
15127 auto res = isl_set_plain_is_empty(get());
15128 return manage(res);
15129}
15130
15131boolean set::plain_is_equal(const set &set2) const
15132{
15133 auto res = isl_set_plain_is_equal(get(), set2.get());
15134 return manage(res);
15135}
15136
15137boolean set::plain_is_universe() const
15138{
15139 auto res = isl_set_plain_is_universe(get());
15140 return manage(res);
15141}
15142
15143basic_set set::plain_unshifted_simple_hull() const
15144{
15145 auto res = isl_set_plain_unshifted_simple_hull(copy());
15146 return manage(res);
15147}
15148
15149basic_set set::polyhedral_hull() const
15150{
15151 auto res = isl_set_polyhedral_hull(copy());
15152 return manage(res);
15153}
15154
15155set set::preimage_multi_aff(multi_aff ma) const
15156{
15157 auto res = isl_set_preimage_multi_aff(copy(), ma.release());
15158 return manage(res);
15159}
15160
15161set set::preimage_multi_pw_aff(multi_pw_aff mpa) const
15162{
15163 auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
15164 return manage(res);
15165}
15166
15167set set::preimage_pw_multi_aff(pw_multi_aff pma) const
15168{
15169 auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
15170 return manage(res);
15171}
15172
15173set set::product(set set2) const
15174{
15175 auto res = isl_set_product(copy(), set2.release());
15176 return manage(res);
15177}
15178
15179map set::project_onto_map(isl::dim type, unsigned int first, unsigned int n) const
15180{
15181 auto res = isl_set_project_onto_map(copy(), static_cast<enum isl_dim_type>(type), first, n);
15182 return manage(res);
15183}
15184
15185set set::project_out(isl::dim type, unsigned int first, unsigned int n) const
15186{
15187 auto res = isl_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
15188 return manage(res);
15189}
15190
15191set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
15192{
15193 auto res = isl_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15194 return manage(res);
15195}
15196
15197set set::remove_divs() const
15198{
15199 auto res = isl_set_remove_divs(copy());
15200 return manage(res);
15201}
15202
15203set set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
15204{
15205 auto res = isl_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15206 return manage(res);
15207}
15208
15209set set::remove_redundancies() const
15210{
15211 auto res = isl_set_remove_redundancies(copy());
15212 return manage(res);
15213}
15214
15215set set::remove_unknown_divs() const
15216{
15217 auto res = isl_set_remove_unknown_divs(copy());
15218 return manage(res);
15219}
15220
15221set set::reset_space(space dim) const
15222{
15223 auto res = isl_set_reset_space(copy(), dim.release());
15224 return manage(res);
15225}
15226
15227set set::reset_tuple_id() const
15228{
15229 auto res = isl_set_reset_tuple_id(copy());
15230 return manage(res);
15231}
15232
15233set set::reset_user() const
15234{
15235 auto res = isl_set_reset_user(copy());
15236 return manage(res);
15237}
15238
15239basic_set set::sample() const
15240{
15241 auto res = isl_set_sample(copy());
15242 return manage(res);
15243}
15244
15245point set::sample_point() const
15246{
15247 auto res = isl_set_sample_point(copy());
15248 return manage(res);
15249}
15250
15251set set::set_dim_id(isl::dim type, unsigned int pos, id id) const
15252{
15253 auto res = isl_set_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
15254 return manage(res);
15255}
15256
15257set set::set_tuple_id(id id) const
15258{
15259 auto res = isl_set_set_tuple_id(copy(), id.release());
15260 return manage(res);
15261}
15262
15263set set::set_tuple_name(const std::string &s) const
15264{
15265 auto res = isl_set_set_tuple_name(copy(), s.c_str());
15266 return manage(res);
15267}
15268
15269basic_set set::simple_hull() const
15270{
15271 auto res = isl_set_simple_hull(copy());
15272 return manage(res);
15273}
15274
15275int set::size() const
15276{
15277 auto res = isl_set_size(get());
15278 return res;
15279}
15280
15281basic_set set::solutions() const
15282{
15283 auto res = isl_set_solutions(copy());
15284 return manage(res);
15285}
15286
15287set set::split_dims(isl::dim type, unsigned int first, unsigned int n) const
15288{
15289 auto res = isl_set_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15290 return manage(res);
15291}
15292
15293set set::subtract(set set2) const
15294{
15295 auto res = isl_set_subtract(copy(), set2.release());
15296 return manage(res);
15297}
15298
15299set set::sum(set set2) const
15300{
15301 auto res = isl_set_sum(copy(), set2.release());
15302 return manage(res);
15303}
15304
15305set set::unite(set set2) const
15306{
15307 auto res = isl_set_union(copy(), set2.release());
15308 return manage(res);
15309}
15310
15311set set::universe(space space)
15312{
15313 auto res = isl_set_universe(space.release());
15314 return manage(res);
15315}
15316
15317basic_set set::unshifted_simple_hull() const
15318{
15319 auto res = isl_set_unshifted_simple_hull(copy());
15320 return manage(res);
15321}
15322
15323basic_set set::unshifted_simple_hull_from_set_list(set_list list) const
15324{
15325 auto res = isl_set_unshifted_simple_hull_from_set_list(copy(), list.release());
15326 return manage(res);
15327}
15328
15329map set::unwrap() const
15330{
15331 auto res = isl_set_unwrap(copy());
15332 return manage(res);
15333}
15334
15335set set::upper_bound_si(isl::dim type, unsigned int pos, int value) const
15336{
15337 auto res = isl_set_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
15338 return manage(res);
15339}
15340
15341set set::upper_bound_val(isl::dim type, unsigned int pos, val value) const
15342{
15343 auto res = isl_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
15344 return manage(res);
15345}
15346
15347map set::wrapped_domain_map() const
15348{
15349 auto res = isl_set_wrapped_domain_map(copy());
15350 return manage(res);
15351}
15352
15353// implementations for isl::set_list
15354set_list manage(__isl_take isl_set_list *ptr) {
15355 return set_list(ptr);
15356}
15357set_list manage_copy(__isl_keep isl_set_list *ptr) {
15358 ptr = isl_set_list_copy(ptr);
15359 return set_list(ptr);
15360}
15361
15362set_list::set_list()
15363 : ptr(nullptr) {}
15364
15365set_list::set_list(const set_list &obj)
15366 : ptr(nullptr)
15367{
15368 ptr = obj.copy();
15369}
15370set_list::set_list(std::nullptr_t)
15371 : ptr(nullptr) {}
15372
15373
15374set_list::set_list(__isl_take isl_set_list *ptr)
15375 : ptr(ptr) {}
15376
15377
15378set_list &set_list::operator=(set_list obj) {
15379 std::swap(this->ptr, obj.ptr);
15380 return *this;
15381}
15382
15383set_list::~set_list() {
15384 if (ptr)
15385 isl_set_list_free(ptr);
15386}
15387
15388__isl_give isl_set_list *set_list::copy() const & {
15389 return isl_set_list_copy(ptr);
15390}
15391
15392__isl_keep isl_set_list *set_list::get() const {
15393 return ptr;
15394}
15395
15396__isl_give isl_set_list *set_list::release() {
15397 isl_set_list *tmp = ptr;
15398 ptr = nullptr;
15399 return tmp;
15400}
15401
15402bool set_list::is_null() const {
15403 return ptr == nullptr;
15404}
15405set_list::operator bool() const {
15406 return !is_null();
15407}
15408
15409
15410ctx set_list::get_ctx() const {
15411 return ctx(isl_set_list_get_ctx(ptr));
15412}
15413
15414void set_list::dump() const {
15415 isl_set_list_dump(get());
15416}
15417
15418
15419set_list set_list::add(set el) const
15420{
15421 auto res = isl_set_list_add(copy(), el.release());
15422 return manage(res);
15423}
15424
15425set_list set_list::alloc(ctx ctx, int n)
15426{
15427 auto res = isl_set_list_alloc(ctx.release(), n);
15428 return manage(res);
15429}
15430
15431set_list set_list::concat(set_list list2) const
15432{
15433 auto res = isl_set_list_concat(copy(), list2.release());
15434 return manage(res);
15435}
15436
15437set_list set_list::drop(unsigned int first, unsigned int n) const
15438{
15439 auto res = isl_set_list_drop(copy(), first, n);
15440 return manage(res);
15441}
15442
15443stat set_list::foreach(const std::function<stat(set)> &fn) const
15444{
15445 struct fn_data {
15446 const std::function<stat(set)> *func;
15447 } fn_data = { &fn };
15448 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
15449 auto *data = static_cast<struct fn_data *>(arg_1);
15450 stat ret = (*data->func)(manage(arg_0));
15451 return ret.release();
15452 };
15453 auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
15454 return manage(res);
15455}
15456
15457set_list set_list::from_set(set el)
15458{
15459 auto res = isl_set_list_from_set(el.release());
15460 return manage(res);
15461}
15462
15463set set_list::get_at(int index) const
15464{
15465 auto res = isl_set_list_get_at(get(), index);
15466 return manage(res);
15467}
15468
15469set set_list::get_set(int index) const
15470{
15471 auto res = isl_set_list_get_set(get(), index);
15472 return manage(res);
15473}
15474
15475set_list set_list::insert(unsigned int pos, set el) const
15476{
15477 auto res = isl_set_list_insert(copy(), pos, el.release());
15478 return manage(res);
15479}
15480
15481int set_list::n_set() const
15482{
15483 auto res = isl_set_list_n_set(get());
15484 return res;
15485}
15486
15487set_list set_list::reverse() const
15488{
15489 auto res = isl_set_list_reverse(copy());
15490 return manage(res);
15491}
15492
15493set_list set_list::set_set(int index, set el) const
15494{
15495 auto res = isl_set_list_set_set(copy(), index, el.release());
15496 return manage(res);
15497}
15498
15499int set_list::size() const
15500{
15501 auto res = isl_set_list_size(get());
15502 return res;
15503}
15504
15505set_list set_list::swap(unsigned int pos1, unsigned int pos2) const
15506{
15507 auto res = isl_set_list_swap(copy(), pos1, pos2);
15508 return manage(res);
15509}
15510
15511set set_list::unite() const
15512{
15513 auto res = isl_set_list_union(copy());
15514 return manage(res);
15515}
15516
15517// implementations for isl::space
15518space manage(__isl_take isl_space *ptr) {
15519 return space(ptr);
15520}
15521space manage_copy(__isl_keep isl_space *ptr) {
15522 ptr = isl_space_copy(ptr);
15523 return space(ptr);
15524}
15525
15526space::space()
15527 : ptr(nullptr) {}
15528
15529space::space(const space &obj)
15530 : ptr(nullptr)
15531{
15532 ptr = obj.copy();
15533}
15534space::space(std::nullptr_t)
15535 : ptr(nullptr) {}
15536
15537
15538space::space(__isl_take isl_space *ptr)
15539 : ptr(ptr) {}
15540
15541space::space(ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out)
15542{
15543 auto res = isl_space_alloc(ctx.release(), nparam, n_in, n_out);
15544 ptr = res;
15545}
15546space::space(ctx ctx, unsigned int nparam, unsigned int dim)
15547{
15548 auto res = isl_space_set_alloc(ctx.release(), nparam, dim);
15549 ptr = res;
15550}
15551
15552space &space::operator=(space obj) {
15553 std::swap(this->ptr, obj.ptr);
15554 return *this;
15555}
15556
15557space::~space() {
15558 if (ptr)
15559 isl_space_free(ptr);
15560}
15561
15562__isl_give isl_space *space::copy() const & {
15563 return isl_space_copy(ptr);
15564}
15565
15566__isl_keep isl_space *space::get() const {
15567 return ptr;
15568}
15569
15570__isl_give isl_space *space::release() {
15571 isl_space *tmp = ptr;
15572 ptr = nullptr;
15573 return tmp;
15574}
15575
15576bool space::is_null() const {
15577 return ptr == nullptr;
15578}
15579space::operator bool() const {
15580 return !is_null();
15581}
15582
15583
15584ctx space::get_ctx() const {
15585 return ctx(isl_space_get_ctx(ptr));
15586}
15587std::string space::to_str() const {
15588 char *Tmp = isl_space_to_str(get());
15589 if (!Tmp)
15590 return "";
15591 std::string S(Tmp);
15592 free(Tmp);
15593 return S;
15594}
15595
15596
15597void space::dump() const {
15598 isl_space_dump(get());
15599}
15600
15601
15602space space::add_dims(isl::dim type, unsigned int n) const
15603{
15604 auto res = isl_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
15605 return manage(res);
15606}
15607
15608space space::add_param_id(id id) const
15609{
15610 auto res = isl_space_add_param_id(copy(), id.release());
15611 return manage(res);
15612}
15613
15614space space::align_params(space dim2) const
15615{
15616 auto res = isl_space_align_params(copy(), dim2.release());
15617 return manage(res);
15618}
15619
15620boolean space::can_curry() const
15621{
15622 auto res = isl_space_can_curry(get());
15623 return manage(res);
15624}
15625
15626boolean space::can_range_curry() const
15627{
15628 auto res = isl_space_can_range_curry(get());
15629 return manage(res);
15630}
15631
15632boolean space::can_uncurry() const
15633{
15634 auto res = isl_space_can_uncurry(get());
15635 return manage(res);
15636}
15637
15638boolean space::can_zip() const
15639{
15640 auto res = isl_space_can_zip(get());
15641 return manage(res);
15642}
15643
15644space space::curry() const
15645{
15646 auto res = isl_space_curry(copy());
15647 return manage(res);
15648}
15649
15650unsigned int space::dim(isl::dim type) const
15651{
15652 auto res = isl_space_dim(get(), static_cast<enum isl_dim_type>(type));
15653 return res;
15654}
15655
15656space space::domain() const
15657{
15658 auto res = isl_space_domain(copy());
15659 return manage(res);
15660}
15661
15662space space::domain_factor_domain() const
15663{
15664 auto res = isl_space_domain_factor_domain(copy());
15665 return manage(res);
15666}
15667
15668space space::domain_factor_range() const
15669{
15670 auto res = isl_space_domain_factor_range(copy());
15671 return manage(res);
15672}
15673
15674boolean space::domain_is_wrapping() const
15675{
15676 auto res = isl_space_domain_is_wrapping(get());
15677 return manage(res);
15678}
15679
15680space space::domain_map() const
15681{
15682 auto res = isl_space_domain_map(copy());
15683 return manage(res);
15684}
15685
15686space space::domain_product(space right) const
15687{
15688 auto res = isl_space_domain_product(copy(), right.release());
15689 return manage(res);
15690}
15691
15692space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const
15693{
15694 auto res = isl_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, num);
15695 return manage(res);
15696}
15697
15698space space::factor_domain() const
15699{
15700 auto res = isl_space_factor_domain(copy());
15701 return manage(res);
15702}
15703
15704space space::factor_range() const
15705{
15706 auto res = isl_space_factor_range(copy());
15707 return manage(res);
15708}
15709
15710int space::find_dim_by_id(isl::dim type, const id &id) const
15711{
15712 auto res = isl_space_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
15713 return res;
15714}
15715
15716int space::find_dim_by_name(isl::dim type, const std::string &name) const
15717{
15718 auto res = isl_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
15719 return res;
15720}
15721
15722space space::flatten_domain() const
15723{
15724 auto res = isl_space_flatten_domain(copy());
15725 return manage(res);
15726}
15727
15728space space::flatten_range() const
15729{
15730 auto res = isl_space_flatten_range(copy());
15731 return manage(res);
15732}
15733
15734space space::from_domain() const
15735{
15736 auto res = isl_space_from_domain(copy());
15737 return manage(res);
15738}
15739
15740space space::from_range() const
15741{
15742 auto res = isl_space_from_range(copy());
15743 return manage(res);
15744}
15745
15746id space::get_dim_id(isl::dim type, unsigned int pos) const
15747{
15748 auto res = isl_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15749 return manage(res);
15750}
15751
15752std::string space::get_dim_name(isl::dim type, unsigned int pos) const
15753{
15754 auto res = isl_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
15755 std::string tmp(res);
15756 return tmp;
15757}
15758
15759id space::get_tuple_id(isl::dim type) const
15760{
15761 auto res = isl_space_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
15762 return manage(res);
15763}
15764
15765std::string space::get_tuple_name(isl::dim type) const
15766{
15767 auto res = isl_space_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
15768 std::string tmp(res);
15769 return tmp;
15770}
15771
15772boolean space::has_dim_id(isl::dim type, unsigned int pos) const
15773{
15774 auto res = isl_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15775 return manage(res);
15776}
15777
15778boolean space::has_dim_name(isl::dim type, unsigned int pos) const
15779{
15780 auto res = isl_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
15781 return manage(res);
15782}
15783
15784boolean space::has_equal_params(const space &space2) const
15785{
15786 auto res = isl_space_has_equal_params(get(), space2.get());
15787 return manage(res);
15788}
15789
15790boolean space::has_equal_tuples(const space &space2) const
15791{
15792 auto res = isl_space_has_equal_tuples(get(), space2.get());
15793 return manage(res);
15794}
15795
15796boolean space::has_tuple_id(isl::dim type) const
15797{
15798 auto res = isl_space_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
15799 return manage(res);
15800}
15801
15802boolean space::has_tuple_name(isl::dim type) const
15803{
15804 auto res = isl_space_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
15805 return manage(res);
15806}
15807
15808space space::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
15809{
15810 auto res = isl_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
15811 return manage(res);
15812}
15813
15814boolean space::is_domain(const space &space2) const
15815{
15816 auto res = isl_space_is_domain(get(), space2.get());
15817 return manage(res);
15818}
15819
15820boolean space::is_equal(const space &space2) const
15821{
15822 auto res = isl_space_is_equal(get(), space2.get());
15823 return manage(res);
15824}
15825
15826boolean space::is_map() const
15827{
15828 auto res = isl_space_is_map(get());
15829 return manage(res);
15830}
15831
15832boolean space::is_params() const
15833{
15834 auto res = isl_space_is_params(get());
15835 return manage(res);
15836}
15837
15838boolean space::is_product() const
15839{
15840 auto res = isl_space_is_product(get());
15841 return manage(res);
15842}
15843
15844boolean space::is_range(const space &space2) const
15845{
15846 auto res = isl_space_is_range(get(), space2.get());
15847 return manage(res);
15848}
15849
15850boolean space::is_set() const
15851{
15852 auto res = isl_space_is_set(get());
15853 return manage(res);
15854}
15855
15856boolean space::is_wrapping() const
15857{
15858 auto res = isl_space_is_wrapping(get());
15859 return manage(res);
15860}
15861
15862space space::join(space right) const
15863{
15864 auto res = isl_space_join(copy(), right.release());
15865 return manage(res);
15866}
15867
15868space space::map_from_domain_and_range(space range) const
15869{
15870 auto res = isl_space_map_from_domain_and_range(copy(), range.release());
15871 return manage(res);
15872}
15873
15874space space::map_from_set() const
15875{
15876 auto res = isl_space_map_from_set(copy());
15877 return manage(res);
15878}
15879
15880space space::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
15881{
15882 auto res = isl_space_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
15883 return manage(res);
15884}
15885
15886space space::params() const
15887{
15888 auto res = isl_space_params(copy());
15889 return manage(res);
15890}
15891
15892space space::params_alloc(ctx ctx, unsigned int nparam)
15893{
15894 auto res = isl_space_params_alloc(ctx.release(), nparam);
15895 return manage(res);
15896}
15897
15898space space::product(space right) const
15899{
15900 auto res = isl_space_product(copy(), right.release());
15901 return manage(res);
15902}
15903
15904space space::range() const
15905{
15906 auto res = isl_space_range(copy());
15907 return manage(res);
15908}
15909
15910space space::range_curry() const
15911{
15912 auto res = isl_space_range_curry(copy());
15913 return manage(res);
15914}
15915
15916space space::range_factor_domain() const
15917{
15918 auto res = isl_space_range_factor_domain(copy());
15919 return manage(res);
15920}
15921
15922space space::range_factor_range() const
15923{
15924 auto res = isl_space_range_factor_range(copy());
15925 return manage(res);
15926}
15927
15928boolean space::range_is_wrapping() const
15929{
15930 auto res = isl_space_range_is_wrapping(get());
15931 return manage(res);
15932}
15933
15934space space::range_map() const
15935{
15936 auto res = isl_space_range_map(copy());
15937 return manage(res);
15938}
15939
15940space space::range_product(space right) const
15941{
15942 auto res = isl_space_range_product(copy(), right.release());
15943 return manage(res);
15944}
15945
15946space space::reset_tuple_id(isl::dim type) const
15947{
15948 auto res = isl_space_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
15949 return manage(res);
15950}
15951
15952space space::reset_user() const
15953{
15954 auto res = isl_space_reset_user(copy());
15955 return manage(res);
15956}
15957
15958space space::reverse() const
15959{
15960 auto res = isl_space_reverse(copy());
15961 return manage(res);
15962}
15963
15964space space::set_dim_id(isl::dim type, unsigned int pos, id id) const
15965{
15966 auto res = isl_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
15967 return manage(res);
15968}
15969
15970space space::set_from_params() const
15971{
15972 auto res = isl_space_set_from_params(copy());
15973 return manage(res);
15974}
15975
15976space space::set_tuple_id(isl::dim type, id id) const
15977{
15978 auto res = isl_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
15979 return manage(res);
15980}
15981
15982space space::set_tuple_name(isl::dim type, const std::string &s) const
15983{
15984 auto res = isl_space_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
15985 return manage(res);
15986}
15987
15988boolean space::tuple_is_equal(isl::dim type1, const space &space2, isl::dim type2) const
15989{
15990 auto res = isl_space_tuple_is_equal(get(), static_cast<enum isl_dim_type>(type1), space2.get(), static_cast<enum isl_dim_type>(type2));
15991 return manage(res);
15992}
15993
15994space space::uncurry() const
15995{
15996 auto res = isl_space_uncurry(copy());
15997 return manage(res);
15998}
15999
16000space space::unwrap() const
16001{
16002 auto res = isl_space_unwrap(copy());
16003 return manage(res);
16004}
16005
16006space space::wrap() const
16007{
16008 auto res = isl_space_wrap(copy());
16009 return manage(res);
16010}
16011
16012space space::zip() const
16013{
16014 auto res = isl_space_zip(copy());
16015 return manage(res);
16016}
16017
16018// implementations for isl::term
16019term manage(__isl_take isl_term *ptr) {
16020 return term(ptr);
16021}
16022term manage_copy(__isl_keep isl_term *ptr) {
16023 ptr = isl_term_copy(ptr);
16024 return term(ptr);
16025}
16026
16027term::term()
16028 : ptr(nullptr) {}
16029
16030term::term(const term &obj)
16031 : ptr(nullptr)
16032{
16033 ptr = obj.copy();
16034}
16035term::term(std::nullptr_t)
16036 : ptr(nullptr) {}
16037
16038
16039term::term(__isl_take isl_term *ptr)
16040 : ptr(ptr) {}
16041
16042
16043term &term::operator=(term obj) {
16044 std::swap(this->ptr, obj.ptr);
16045 return *this;
16046}
16047
16048term::~term() {
16049 if (ptr)
16050 isl_term_free(ptr);
16051}
16052
16053__isl_give isl_term *term::copy() const & {
16054 return isl_term_copy(ptr);
16055}
16056
16057__isl_keep isl_term *term::get() const {
16058 return ptr;
16059}
16060
16061__isl_give isl_term *term::release() {
16062 isl_term *tmp = ptr;
16063 ptr = nullptr;
16064 return tmp;
16065}
16066
16067bool term::is_null() const {
16068 return ptr == nullptr;
16069}
16070term::operator bool() const {
16071 return !is_null();
16072}
16073
16074
16075ctx term::get_ctx() const {
16076 return ctx(isl_term_get_ctx(ptr));
16077}
16078
16079
16080unsigned int term::dim(isl::dim type) const
16081{
16082 auto res = isl_term_dim(get(), static_cast<enum isl_dim_type>(type));
16083 return res;
16084}
16085
16086val term::get_coefficient_val() const
16087{
16088 auto res = isl_term_get_coefficient_val(get());
16089 return manage(res);
16090}
16091
16092aff term::get_div(unsigned int pos) const
16093{
16094 auto res = isl_term_get_div(get(), pos);
16095 return manage(res);
16096}
16097
16098int term::get_exp(isl::dim type, unsigned int pos) const
16099{
16100 auto res = isl_term_get_exp(get(), static_cast<enum isl_dim_type>(type), pos);
16101 return res;
16102}
16103
16104// implementations for isl::union_access_info
16105union_access_info manage(__isl_take isl_union_access_info *ptr) {
16106 return union_access_info(ptr);
16107}
16108union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
16109 ptr = isl_union_access_info_copy(ptr);
16110 return union_access_info(ptr);
16111}
16112
16113union_access_info::union_access_info()
16114 : ptr(nullptr) {}
16115
16116union_access_info::union_access_info(const union_access_info &obj)
16117 : ptr(nullptr)
16118{
16119 ptr = obj.copy();
16120}
16121union_access_info::union_access_info(std::nullptr_t)
16122 : ptr(nullptr) {}
16123
16124
16125union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
16126 : ptr(ptr) {}
16127
16128union_access_info::union_access_info(union_map sink)
16129{
16130 auto res = isl_union_access_info_from_sink(sink.release());
16131 ptr = res;
16132}
16133
16134union_access_info &union_access_info::operator=(union_access_info obj) {
16135 std::swap(this->ptr, obj.ptr);
16136 return *this;
16137}
16138
16139union_access_info::~union_access_info() {
16140 if (ptr)
16141 isl_union_access_info_free(ptr);
16142}
16143
16144__isl_give isl_union_access_info *union_access_info::copy() const & {
16145 return isl_union_access_info_copy(ptr);
16146}
16147
16148__isl_keep isl_union_access_info *union_access_info::get() const {
16149 return ptr;
16150}
16151
16152__isl_give isl_union_access_info *union_access_info::release() {
16153 isl_union_access_info *tmp = ptr;
16154 ptr = nullptr;
16155 return tmp;
16156}
16157
16158bool union_access_info::is_null() const {
16159 return ptr == nullptr;
16160}
16161union_access_info::operator bool() const {
16162 return !is_null();
16163}
16164
16165
16166ctx union_access_info::get_ctx() const {
16167 return ctx(isl_union_access_info_get_ctx(ptr));
16168}
16169std::string union_access_info::to_str() const {
16170 char *Tmp = isl_union_access_info_to_str(get());
16171 if (!Tmp)
16172 return "";
16173 std::string S(Tmp);
16174 free(Tmp);
16175 return S;
16176}
16177
16178
16179
16180union_flow union_access_info::compute_flow() const
16181{
16182 auto res = isl_union_access_info_compute_flow(copy());
16183 return manage(res);
16184}
16185
16186union_access_info union_access_info::set_kill(union_map kill) const
16187{
16188 auto res = isl_union_access_info_set_kill(copy(), kill.release());
16189 return manage(res);
16190}
16191
16192union_access_info union_access_info::set_may_source(union_map may_source) const
16193{
16194 auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
16195 return manage(res);
16196}
16197
16198union_access_info union_access_info::set_must_source(union_map must_source) const
16199{
16200 auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
16201 return manage(res);
16202}
16203
16204union_access_info union_access_info::set_schedule(schedule schedule) const
16205{
16206 auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
16207 return manage(res);
16208}
16209
16210union_access_info union_access_info::set_schedule_map(union_map schedule_map) const
16211{
16212 auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
16213 return manage(res);
16214}
16215
16216// implementations for isl::union_flow
16217union_flow manage(__isl_take isl_union_flow *ptr) {
16218 return union_flow(ptr);
16219}
16220union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
16221 ptr = isl_union_flow_copy(ptr);
16222 return union_flow(ptr);
16223}
16224
16225union_flow::union_flow()
16226 : ptr(nullptr) {}
16227
16228union_flow::union_flow(const union_flow &obj)
16229 : ptr(nullptr)
16230{
16231 ptr = obj.copy();
16232}
16233union_flow::union_flow(std::nullptr_t)
16234 : ptr(nullptr) {}
16235
16236
16237union_flow::union_flow(__isl_take isl_union_flow *ptr)
16238 : ptr(ptr) {}
16239
16240
16241union_flow &union_flow::operator=(union_flow obj) {
16242 std::swap(this->ptr, obj.ptr);
16243 return *this;
16244}
16245
16246union_flow::~union_flow() {
16247 if (ptr)
16248 isl_union_flow_free(ptr);
16249}
16250
16251__isl_give isl_union_flow *union_flow::copy() const & {
16252 return isl_union_flow_copy(ptr);
16253}
16254
16255__isl_keep isl_union_flow *union_flow::get() const {
16256 return ptr;
16257}
16258
16259__isl_give isl_union_flow *union_flow::release() {
16260 isl_union_flow *tmp = ptr;
16261 ptr = nullptr;
16262 return tmp;
16263}
16264
16265bool union_flow::is_null() const {
16266 return ptr == nullptr;
16267}
16268union_flow::operator bool() const {
16269 return !is_null();
16270}
16271
16272
16273ctx union_flow::get_ctx() const {
16274 return ctx(isl_union_flow_get_ctx(ptr));
16275}
16276std::string union_flow::to_str() const {
16277 char *Tmp = isl_union_flow_to_str(get());
16278 if (!Tmp)
16279 return "";
16280 std::string S(Tmp);
16281 free(Tmp);
16282 return S;
16283}
16284
16285
16286
16287union_map union_flow::get_full_may_dependence() const
16288{
16289 auto res = isl_union_flow_get_full_may_dependence(get());
16290 return manage(res);
16291}
16292
16293union_map union_flow::get_full_must_dependence() const
16294{
16295 auto res = isl_union_flow_get_full_must_dependence(get());
16296 return manage(res);
16297}
16298
16299union_map union_flow::get_may_dependence() const
16300{
16301 auto res = isl_union_flow_get_may_dependence(get());
16302 return manage(res);
16303}
16304
16305union_map union_flow::get_may_no_source() const
16306{
16307 auto res = isl_union_flow_get_may_no_source(get());
16308 return manage(res);
16309}
16310
16311union_map union_flow::get_must_dependence() const
16312{
16313 auto res = isl_union_flow_get_must_dependence(get());
16314 return manage(res);
16315}
16316
16317union_map union_flow::get_must_no_source() const
16318{
16319 auto res = isl_union_flow_get_must_no_source(get());
16320 return manage(res);
16321}
16322
16323// implementations for isl::union_map
16324union_map manage(__isl_take isl_union_map *ptr) {
16325 return union_map(ptr);
16326}
16327union_map manage_copy(__isl_keep isl_union_map *ptr) {
16328 ptr = isl_union_map_copy(ptr);
16329 return union_map(ptr);
16330}
16331
16332union_map::union_map()
16333 : ptr(nullptr) {}
16334
16335union_map::union_map(const union_map &obj)
16336 : ptr(nullptr)
16337{
16338 ptr = obj.copy();
16339}
16340union_map::union_map(std::nullptr_t)
16341 : ptr(nullptr) {}
16342
16343
16344union_map::union_map(__isl_take isl_union_map *ptr)
16345 : ptr(ptr) {}
16346
16347union_map::union_map(union_pw_multi_aff upma)
16348{
16349 auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
16350 ptr = res;
16351}
16352union_map::union_map(basic_map bmap)
16353{
16354 auto res = isl_union_map_from_basic_map(bmap.release());
16355 ptr = res;
16356}
16357union_map::union_map(map map)
16358{
16359 auto res = isl_union_map_from_map(map.release());
16360 ptr = res;
16361}
16362union_map::union_map(ctx ctx, const std::string &str)
16363{
16364 auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
16365 ptr = res;
16366}
16367
16368union_map &union_map::operator=(union_map obj) {
16369 std::swap(this->ptr, obj.ptr);
16370 return *this;
16371}
16372
16373union_map::~union_map() {
16374 if (ptr)
16375 isl_union_map_free(ptr);
16376}
16377
16378__isl_give isl_union_map *union_map::copy() const & {
16379 return isl_union_map_copy(ptr);
16380}
16381
16382__isl_keep isl_union_map *union_map::get() const {
16383 return ptr;
16384}
16385
16386__isl_give isl_union_map *union_map::release() {
16387 isl_union_map *tmp = ptr;
16388 ptr = nullptr;
16389 return tmp;
16390}
16391
16392bool union_map::is_null() const {
16393 return ptr == nullptr;
16394}
16395union_map::operator bool() const {
16396 return !is_null();
16397}
16398
16399
16400ctx union_map::get_ctx() const {
16401 return ctx(isl_union_map_get_ctx(ptr));
16402}
16403std::string union_map::to_str() const {
16404 char *Tmp = isl_union_map_to_str(get());
16405 if (!Tmp)
16406 return "";
16407 std::string S(Tmp);
16408 free(Tmp);
16409 return S;
16410}
16411
16412
16413void union_map::dump() const {
16414 isl_union_map_dump(get());
16415}
16416
16417
16418union_map union_map::add_map(map map) const
16419{
16420 auto res = isl_union_map_add_map(copy(), map.release());
16421 return manage(res);
16422}
16423
16424union_map union_map::affine_hull() const
16425{
16426 auto res = isl_union_map_affine_hull(copy());
16427 return manage(res);
16428}
16429
16430union_map union_map::align_params(space model) const
16431{
16432 auto res = isl_union_map_align_params(copy(), model.release());
16433 return manage(res);
16434}
16435
16436union_map union_map::apply_domain(union_map umap2) const
16437{
16438 auto res = isl_union_map_apply_domain(copy(), umap2.release());
16439 return manage(res);
16440}
16441
16442union_map union_map::apply_range(union_map umap2) const
16443{
16444 auto res = isl_union_map_apply_range(copy(), umap2.release());
16445 return manage(res);
16446}
16447
16448union_map union_map::coalesce() const
16449{
16450 auto res = isl_union_map_coalesce(copy());
16451 return manage(res);
16452}
16453
16454boolean union_map::contains(const space &space) const
16455{
16456 auto res = isl_union_map_contains(get(), space.get());
16457 return manage(res);
16458}
16459
16460union_map union_map::curry() const
16461{
16462 auto res = isl_union_map_curry(copy());
16463 return manage(res);
16464}
16465
16466union_set union_map::deltas() const
16467{
16468 auto res = isl_union_map_deltas(copy());
16469 return manage(res);
16470}
16471
16472union_map union_map::deltas_map() const
16473{
16474 auto res = isl_union_map_deltas_map(copy());
16475 return manage(res);
16476}
16477
16478union_map union_map::detect_equalities() const
16479{
16480 auto res = isl_union_map_detect_equalities(copy());
16481 return manage(res);
16482}
16483
16484unsigned int union_map::dim(isl::dim type) const
16485{
16486 auto res = isl_union_map_dim(get(), static_cast<enum isl_dim_type>(type));
16487 return res;
16488}
16489
16490union_set union_map::domain() const
16491{
16492 auto res = isl_union_map_domain(copy());
16493 return manage(res);
16494}
16495
16496union_map union_map::domain_factor_domain() const
16497{
16498 auto res = isl_union_map_domain_factor_domain(copy());
16499 return manage(res);
16500}
16501
16502union_map union_map::domain_factor_range() const
16503{
16504 auto res = isl_union_map_domain_factor_range(copy());
16505 return manage(res);
16506}
16507
16508union_map union_map::domain_map() const
16509{
16510 auto res = isl_union_map_domain_map(copy());
16511 return manage(res);
16512}
16513
16514union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
16515{
16516 auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
16517 return manage(res);
16518}
16519
16520union_map union_map::domain_product(union_map umap2) const
16521{
16522 auto res = isl_union_map_domain_product(copy(), umap2.release());
16523 return manage(res);
16524}
16525
16526union_map union_map::empty(space space)
16527{
16528 auto res = isl_union_map_empty(space.release());
16529 return manage(res);
16530}
16531
16532union_map union_map::eq_at(multi_union_pw_aff mupa) const
16533{
16534 auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
16535 return manage(res);
16536}
16537
16538map union_map::extract_map(space dim) const
16539{
16540 auto res = isl_union_map_extract_map(get(), dim.release());
16541 return manage(res);
16542}
16543
16544union_map union_map::factor_domain() const
16545{
16546 auto res = isl_union_map_factor_domain(copy());
16547 return manage(res);
16548}
16549
16550union_map union_map::factor_range() const
16551{
16552 auto res = isl_union_map_factor_range(copy());
16553 return manage(res);
16554}
16555
16556int union_map::find_dim_by_name(isl::dim type, const std::string &name) const
16557{
16558 auto res = isl_union_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
16559 return res;
16560}
16561
16562union_map union_map::fixed_power(val exp) const
16563{
16564 auto res = isl_union_map_fixed_power_val(copy(), exp.release());
16565 return manage(res);
16566}
16567
16568union_map union_map::flat_domain_product(union_map umap2) const
16569{
16570 auto res = isl_union_map_flat_domain_product(copy(), umap2.release());
16571 return manage(res);
16572}
16573
16574union_map union_map::flat_range_product(union_map umap2) const
16575{
16576 auto res = isl_union_map_flat_range_product(copy(), umap2.release());
16577 return manage(res);
16578}
16579
16580stat union_map::foreach_map(const std::function<stat(map)> &fn) const
16581{
16582 struct fn_data {
16583 const std::function<stat(map)> *func;
16584 } fn_data = { &fn };
16585 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
16586 auto *data = static_cast<struct fn_data *>(arg_1);
16587 stat ret = (*data->func)(manage(arg_0));
16588 return ret.release();
16589 };
16590 auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
16591 return manage(res);
16592}
16593
16594union_map union_map::from(multi_union_pw_aff mupa)
16595{
16596 auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
16597 return manage(res);
16598}
16599
16600union_map union_map::from_domain(union_set uset)
16601{
16602 auto res = isl_union_map_from_domain(uset.release());
16603 return manage(res);
16604}
16605
16606union_map union_map::from_domain_and_range(union_set domain, union_set range)
16607{
16608 auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
16609 return manage(res);
16610}
16611
16612union_map union_map::from_range(union_set uset)
16613{
16614 auto res = isl_union_map_from_range(uset.release());
16615 return manage(res);
16616}
16617
16618union_map union_map::from_union_pw_aff(union_pw_aff upa)
16619{
16620 auto res = isl_union_map_from_union_pw_aff(upa.release());
16621 return manage(res);
16622}
16623
16624id union_map::get_dim_id(isl::dim type, unsigned int pos) const
16625{
16626 auto res = isl_union_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
16627 return manage(res);
16628}
16629
16630uint32_t union_map::get_hash() const
16631{
16632 auto res = isl_union_map_get_hash(get());
16633 return res;
16634}
16635
16636map_list union_map::get_map_list() const
16637{
16638 auto res = isl_union_map_get_map_list(get());
16639 return manage(res);
16640}
16641
16642space union_map::get_space() const
16643{
16644 auto res = isl_union_map_get_space(get());
16645 return manage(res);
16646}
16647
16648union_map union_map::gist(union_map context) const
16649{
16650 auto res = isl_union_map_gist(copy(), context.release());
16651 return manage(res);
16652}
16653
16654union_map union_map::gist_domain(union_set uset) const
16655{
16656 auto res = isl_union_map_gist_domain(copy(), uset.release());
16657 return manage(res);
16658}
16659
16660union_map union_map::gist_params(set set) const
16661{
16662 auto res = isl_union_map_gist_params(copy(), set.release());
16663 return manage(res);
16664}
16665
16666union_map union_map::gist_range(union_set uset) const
16667{
16668 auto res = isl_union_map_gist_range(copy(), uset.release());
16669 return manage(res);
16670}
16671
16672union_map union_map::intersect(union_map umap2) const
16673{
16674 auto res = isl_union_map_intersect(copy(), umap2.release());
16675 return manage(res);
16676}
16677
16678union_map union_map::intersect_domain(union_set uset) const
16679{
16680 auto res = isl_union_map_intersect_domain(copy(), uset.release());
16681 return manage(res);
16682}
16683
16684union_map union_map::intersect_params(set set) const
16685{
16686 auto res = isl_union_map_intersect_params(copy(), set.release());
16687 return manage(res);
16688}
16689
16690union_map union_map::intersect_range(union_set uset) const
16691{
16692 auto res = isl_union_map_intersect_range(copy(), uset.release());
16693 return manage(res);
16694}
16695
16696union_map union_map::intersect_range_factor_range(union_map factor) const
16697{
16698 auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
16699 return manage(res);
16700}
16701
16702boolean union_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
16703{
16704 auto res = isl_union_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
16705 return manage(res);
16706}
16707
16708boolean union_map::is_bijective() const
16709{
16710 auto res = isl_union_map_is_bijective(get());
16711 return manage(res);
16712}
16713
16714boolean union_map::is_disjoint(const union_map &umap2) const
16715{
16716 auto res = isl_union_map_is_disjoint(get(), umap2.get());
16717 return manage(res);
16718}
16719
16720boolean union_map::is_empty() const
16721{
16722 auto res = isl_union_map_is_empty(get());
16723 return manage(res);
16724}
16725
16726boolean union_map::is_equal(const union_map &umap2) const
16727{
16728 auto res = isl_union_map_is_equal(get(), umap2.get());
16729 return manage(res);
16730}
16731
16732boolean union_map::is_identity() const
16733{
16734 auto res = isl_union_map_is_identity(get());
16735 return manage(res);
16736}
16737
16738boolean union_map::is_injective() const
16739{
16740 auto res = isl_union_map_is_injective(get());
16741 return manage(res);
16742}
16743
16744boolean union_map::is_single_valued() const
16745{
16746 auto res = isl_union_map_is_single_valued(get());
16747 return manage(res);
16748}
16749
16750boolean union_map::is_strict_subset(const union_map &umap2) const
16751{
16752 auto res = isl_union_map_is_strict_subset(get(), umap2.get());
16753 return manage(res);
16754}
16755
16756boolean union_map::is_subset(const union_map &umap2) const
16757{
16758 auto res = isl_union_map_is_subset(get(), umap2.get());
16759 return manage(res);
16760}
16761
16762union_map union_map::lex_ge_union_map(union_map umap2) const
16763{
16764 auto res = isl_union_map_lex_ge_union_map(copy(), umap2.release());
16765 return manage(res);
16766}
16767
16768union_map union_map::lex_gt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const
16769{
16770 auto res = isl_union_map_lex_gt_at_multi_union_pw_aff(copy(), mupa.release());
16771 return manage(res);
16772}
16773
16774union_map union_map::lex_gt_union_map(union_map umap2) const
16775{
16776 auto res = isl_union_map_lex_gt_union_map(copy(), umap2.release());
16777 return manage(res);
16778}
16779
16780union_map union_map::lex_le_union_map(union_map umap2) const
16781{
16782 auto res = isl_union_map_lex_le_union_map(copy(), umap2.release());
16783 return manage(res);
16784}
16785
16786union_map union_map::lex_lt_at_multi_union_pw_aff(multi_union_pw_aff mupa) const
16787{
16788 auto res = isl_union_map_lex_lt_at_multi_union_pw_aff(copy(), mupa.release());
16789 return manage(res);
16790}
16791
16792union_map union_map::lex_lt_union_map(union_map umap2) const
16793{
16794 auto res = isl_union_map_lex_lt_union_map(copy(), umap2.release());
16795 return manage(res);
16796}
16797
16798union_map union_map::lexmax() const
16799{
16800 auto res = isl_union_map_lexmax(copy());
16801 return manage(res);
16802}
16803
16804union_map union_map::lexmin() const
16805{
16806 auto res = isl_union_map_lexmin(copy());
16807 return manage(res);
16808}
16809
16810int union_map::n_map() const
16811{
16812 auto res = isl_union_map_n_map(get());
16813 return res;
16814}
16815
16816set union_map::params() const
16817{
16818 auto res = isl_union_map_params(copy());
16819 return manage(res);
16820}
16821
16822boolean union_map::plain_is_empty() const
16823{
16824 auto res = isl_union_map_plain_is_empty(get());
16825 return manage(res);
16826}
16827
16828boolean union_map::plain_is_injective() const
16829{
16830 auto res = isl_union_map_plain_is_injective(get());
16831 return manage(res);
16832}
16833
16834union_map union_map::polyhedral_hull() const
16835{
16836 auto res = isl_union_map_polyhedral_hull(copy());
16837 return manage(res);
16838}
16839
16840union_map union_map::preimage_domain_multi_aff(multi_aff ma) const
16841{
16842 auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
16843 return manage(res);
16844}
16845
16846union_map union_map::preimage_domain_multi_pw_aff(multi_pw_aff mpa) const
16847{
16848 auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
16849 return manage(res);
16850}
16851
16852union_map union_map::preimage_domain_pw_multi_aff(pw_multi_aff pma) const
16853{
16854 auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
16855 return manage(res);
16856}
16857
16858union_map union_map::preimage_domain_union_pw_multi_aff(union_pw_multi_aff upma) const
16859{
16860 auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
16861 return manage(res);
16862}
16863
16864union_map union_map::preimage_range_multi_aff(multi_aff ma) const
16865{
16866 auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
16867 return manage(res);
16868}
16869
16870union_map union_map::preimage_range_pw_multi_aff(pw_multi_aff pma) const
16871{
16872 auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
16873 return manage(res);
16874}
16875
16876union_map union_map::preimage_range_union_pw_multi_aff(union_pw_multi_aff upma) const
16877{
16878 auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
16879 return manage(res);
16880}
16881
16882union_map union_map::product(union_map umap2) const
16883{
16884 auto res = isl_union_map_product(copy(), umap2.release());
16885 return manage(res);
16886}
16887
16888union_map union_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
16889{
16890 auto res = isl_union_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
16891 return manage(res);
16892}
16893
16894union_map union_map::project_out_all_params() const
16895{
16896 auto res = isl_union_map_project_out_all_params(copy());
16897 return manage(res);
16898}
16899
16900union_set union_map::range() const
16901{
16902 auto res = isl_union_map_range(copy());
16903 return manage(res);
16904}
16905
16906union_map union_map::range_curry() const
16907{
16908 auto res = isl_union_map_range_curry(copy());
16909 return manage(res);
16910}
16911
16912union_map union_map::range_factor_domain() const
16913{
16914 auto res = isl_union_map_range_factor_domain(copy());
16915 return manage(res);
16916}
16917
16918union_map union_map::range_factor_range() const
16919{
16920 auto res = isl_union_map_range_factor_range(copy());
16921 return manage(res);
16922}
16923
16924union_map union_map::range_map() const
16925{
16926 auto res = isl_union_map_range_map(copy());
16927 return manage(res);
16928}
16929
16930union_map union_map::range_product(union_map umap2) const
16931{
16932 auto res = isl_union_map_range_product(copy(), umap2.release());
16933 return manage(res);
16934}
16935
16936union_map union_map::remove_divs() const
16937{
16938 auto res = isl_union_map_remove_divs(copy());
16939 return manage(res);
16940}
16941
16942union_map union_map::remove_redundancies() const
16943{
16944 auto res = isl_union_map_remove_redundancies(copy());
16945 return manage(res);
16946}
16947
16948union_map union_map::reset_user() const
16949{
16950 auto res = isl_union_map_reset_user(copy());
16951 return manage(res);
16952}
16953
16954union_map union_map::reverse() const
16955{
16956 auto res = isl_union_map_reverse(copy());
16957 return manage(res);
16958}
16959
16960basic_map union_map::sample() const
16961{
16962 auto res = isl_union_map_sample(copy());
16963 return manage(res);
16964}
16965
16966union_map union_map::simple_hull() const
16967{
16968 auto res = isl_union_map_simple_hull(copy());
16969 return manage(res);
16970}
16971
16972union_map union_map::subtract(union_map umap2) const
16973{
16974 auto res = isl_union_map_subtract(copy(), umap2.release());
16975 return manage(res);
16976}
16977
16978union_map union_map::subtract_domain(union_set dom) const
16979{
16980 auto res = isl_union_map_subtract_domain(copy(), dom.release());
16981 return manage(res);
16982}
16983
16984union_map union_map::subtract_range(union_set dom) const
16985{
16986 auto res = isl_union_map_subtract_range(copy(), dom.release());
16987 return manage(res);
16988}
16989
16990union_map union_map::uncurry() const
16991{
16992 auto res = isl_union_map_uncurry(copy());
16993 return manage(res);
16994}
16995
16996union_map union_map::unite(union_map umap2) const
16997{
16998 auto res = isl_union_map_union(copy(), umap2.release());
16999 return manage(res);
17000}
17001
17002union_map union_map::universe() const
17003{
17004 auto res = isl_union_map_universe(copy());
17005 return manage(res);
17006}
17007
17008union_set union_map::wrap() const
17009{
17010 auto res = isl_union_map_wrap(copy());
17011 return manage(res);
17012}
17013
17014union_map union_map::zip() const
17015{
17016 auto res = isl_union_map_zip(copy());
17017 return manage(res);
17018}
17019
17020// implementations for isl::union_map_list
17021union_map_list manage(__isl_take isl_union_map_list *ptr) {
17022 return union_map_list(ptr);
17023}
17024union_map_list manage_copy(__isl_keep isl_union_map_list *ptr) {
17025 ptr = isl_union_map_list_copy(ptr);
17026 return union_map_list(ptr);
17027}
17028
17029union_map_list::union_map_list()
17030 : ptr(nullptr) {}
17031
17032union_map_list::union_map_list(const union_map_list &obj)
17033 : ptr(nullptr)
17034{
17035 ptr = obj.copy();
17036}
17037union_map_list::union_map_list(std::nullptr_t)
17038 : ptr(nullptr) {}
17039
17040
17041union_map_list::union_map_list(__isl_take isl_union_map_list *ptr)
17042 : ptr(ptr) {}
17043
17044
17045union_map_list &union_map_list::operator=(union_map_list obj) {
17046 std::swap(this->ptr, obj.ptr);
17047 return *this;
17048}
17049
17050union_map_list::~union_map_list() {
17051 if (ptr)
17052 isl_union_map_list_free(ptr);
17053}
17054
17055__isl_give isl_union_map_list *union_map_list::copy() const & {
17056 return isl_union_map_list_copy(ptr);
17057}
17058
17059__isl_keep isl_union_map_list *union_map_list::get() const {
17060 return ptr;
17061}
17062
17063__isl_give isl_union_map_list *union_map_list::release() {
17064 isl_union_map_list *tmp = ptr;
17065 ptr = nullptr;
17066 return tmp;
17067}
17068
17069bool union_map_list::is_null() const {
17070 return ptr == nullptr;
17071}
17072union_map_list::operator bool() const {
17073 return !is_null();
17074}
17075
17076
17077ctx union_map_list::get_ctx() const {
17078 return ctx(isl_union_map_list_get_ctx(ptr));
17079}
17080
17081void union_map_list::dump() const {
17082 isl_union_map_list_dump(get());
17083}
17084
17085
17086union_map_list union_map_list::add(union_map el) const
17087{
17088 auto res = isl_union_map_list_add(copy(), el.release());
17089 return manage(res);
17090}
17091
17092union_map_list union_map_list::alloc(ctx ctx, int n)
17093{
17094 auto res = isl_union_map_list_alloc(ctx.release(), n);
17095 return manage(res);
17096}
17097
17098union_map_list union_map_list::concat(union_map_list list2) const
17099{
17100 auto res = isl_union_map_list_concat(copy(), list2.release());
17101 return manage(res);
17102}
17103
17104union_map_list union_map_list::drop(unsigned int first, unsigned int n) const
17105{
17106 auto res = isl_union_map_list_drop(copy(), first, n);
17107 return manage(res);
17108}
17109
17110stat union_map_list::foreach(const std::function<stat(union_map)> &fn) const
17111{
17112 struct fn_data {
17113 const std::function<stat(union_map)> *func;
17114 } fn_data = { &fn };
17115 auto fn_lambda = [](isl_union_map *arg_0, void *arg_1) -> isl_stat {
17116 auto *data = static_cast<struct fn_data *>(arg_1);
17117 stat ret = (*data->func)(manage(arg_0));
17118 return ret.release();
17119 };
17120 auto res = isl_union_map_list_foreach(get(), fn_lambda, &fn_data);
17121 return manage(res);
17122}
17123
17124union_map_list union_map_list::from_union_map(union_map el)
17125{
17126 auto res = isl_union_map_list_from_union_map(el.release());
17127 return manage(res);
17128}
17129
17130union_map union_map_list::get_at(int index) const
17131{
17132 auto res = isl_union_map_list_get_at(get(), index);
17133 return manage(res);
17134}
17135
17136union_map union_map_list::get_union_map(int index) const
17137{
17138 auto res = isl_union_map_list_get_union_map(get(), index);
17139 return manage(res);
17140}
17141
17142union_map_list union_map_list::insert(unsigned int pos, union_map el) const
17143{
17144 auto res = isl_union_map_list_insert(copy(), pos, el.release());
17145 return manage(res);
17146}
17147
17148int union_map_list::n_union_map() const
17149{
17150 auto res = isl_union_map_list_n_union_map(get());
17151 return res;
17152}
17153
17154union_map_list union_map_list::reverse() const
17155{
17156 auto res = isl_union_map_list_reverse(copy());
17157 return manage(res);
17158}
17159
17160union_map_list union_map_list::set_union_map(int index, union_map el) const
17161{
17162 auto res = isl_union_map_list_set_union_map(copy(), index, el.release());
17163 return manage(res);
17164}
17165
17166int union_map_list::size() const
17167{
17168 auto res = isl_union_map_list_size(get());
17169 return res;
17170}
17171
17172union_map_list union_map_list::swap(unsigned int pos1, unsigned int pos2) const
17173{
17174 auto res = isl_union_map_list_swap(copy(), pos1, pos2);
17175 return manage(res);
17176}
17177
17178// implementations for isl::union_pw_aff
17179union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
17180 return union_pw_aff(ptr);
17181}
17182union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
17183 ptr = isl_union_pw_aff_copy(ptr);
17184 return union_pw_aff(ptr);
17185}
17186
17187union_pw_aff::union_pw_aff()
17188 : ptr(nullptr) {}
17189
17190union_pw_aff::union_pw_aff(const union_pw_aff &obj)
17191 : ptr(nullptr)
17192{
17193 ptr = obj.copy();
17194}
17195union_pw_aff::union_pw_aff(std::nullptr_t)
17196 : ptr(nullptr) {}
17197
17198
17199union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
17200 : ptr(ptr) {}
17201
17202union_pw_aff::union_pw_aff(pw_aff pa)
17203{
17204 auto res = isl_union_pw_aff_from_pw_aff(pa.release());
17205 ptr = res;
17206}
17207union_pw_aff::union_pw_aff(union_set domain, val v)
17208{
17209 auto res = isl_union_pw_aff_val_on_domain(domain.release(), v.release());
17210 ptr = res;
17211}
17212union_pw_aff::union_pw_aff(ctx ctx, const std::string &str)
17213{
17214 auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
17215 ptr = res;
17216}
17217
17218union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
17219 std::swap(this->ptr, obj.ptr);
17220 return *this;
17221}
17222
17223union_pw_aff::~union_pw_aff() {
17224 if (ptr)
17225 isl_union_pw_aff_free(ptr);
17226}
17227
17228__isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
17229 return isl_union_pw_aff_copy(ptr);
17230}
17231
17232__isl_keep isl_union_pw_aff *union_pw_aff::get() const {
17233 return ptr;
17234}
17235
17236__isl_give isl_union_pw_aff *union_pw_aff::release() {
17237 isl_union_pw_aff *tmp = ptr;
17238 ptr = nullptr;
17239 return tmp;
17240}
17241
17242bool union_pw_aff::is_null() const {
17243 return ptr == nullptr;
17244}
17245union_pw_aff::operator bool() const {
17246 return !is_null();
17247}
17248
17249
17250ctx union_pw_aff::get_ctx() const {
17251 return ctx(isl_union_pw_aff_get_ctx(ptr));
17252}
17253std::string union_pw_aff::to_str() const {
17254 char *Tmp = isl_union_pw_aff_to_str(get());
17255 if (!Tmp)
17256 return "";
17257 std::string S(Tmp);
17258 free(Tmp);
17259 return S;
17260}
17261
17262
17263void union_pw_aff::dump() const {
17264 isl_union_pw_aff_dump(get());
17265}
17266
17267
17268union_pw_aff union_pw_aff::add(union_pw_aff upa2) const
17269{
17270 auto res = isl_union_pw_aff_add(copy(), upa2.release());
17271 return manage(res);
17272}
17273
17274union_pw_aff union_pw_aff::add_pw_aff(pw_aff pa) const
17275{
17276 auto res = isl_union_pw_aff_add_pw_aff(copy(), pa.release());
17277 return manage(res);
17278}
17279
17280union_pw_aff union_pw_aff::aff_on_domain(union_set domain, aff aff)
17281{
17282 auto res = isl_union_pw_aff_aff_on_domain(domain.release(), aff.release());
17283 return manage(res);
17284}
17285
17286union_pw_aff union_pw_aff::align_params(space model) const
17287{
17288 auto res = isl_union_pw_aff_align_params(copy(), model.release());
17289 return manage(res);
17290}
17291
17292union_pw_aff union_pw_aff::coalesce() const
17293{
17294 auto res = isl_union_pw_aff_coalesce(copy());
17295 return manage(res);
17296}
17297
17298unsigned int union_pw_aff::dim(isl::dim type) const
17299{
17300 auto res = isl_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
17301 return res;
17302}
17303
17304union_set union_pw_aff::domain() const
17305{
17306 auto res = isl_union_pw_aff_domain(copy());
17307 return manage(res);
17308}
17309
17310union_pw_aff union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
17311{
17312 auto res = isl_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
17313 return manage(res);
17314}
17315
17316union_pw_aff union_pw_aff::empty(space space)
17317{
17318 auto res = isl_union_pw_aff_empty(space.release());
17319 return manage(res);
17320}
17321
17322pw_aff union_pw_aff::extract_pw_aff(space space) const
17323{
17324 auto res = isl_union_pw_aff_extract_pw_aff(get(), space.release());
17325 return manage(res);
17326}
17327
17328int union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
17329{
17330 auto res = isl_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
17331 return res;
17332}
17333
17334union_pw_aff union_pw_aff::floor() const
17335{
17336 auto res = isl_union_pw_aff_floor(copy());
17337 return manage(res);
17338}
17339
17340stat union_pw_aff::foreach_pw_aff(const std::function<stat(pw_aff)> &fn) const
17341{
17342 struct fn_data {
17343 const std::function<stat(pw_aff)> *func;
17344 } fn_data = { &fn };
17345 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
17346 auto *data = static_cast<struct fn_data *>(arg_1);
17347 stat ret = (*data->func)(manage(arg_0));
17348 return ret.release();
17349 };
17350 auto res = isl_union_pw_aff_foreach_pw_aff(get(), fn_lambda, &fn_data);
17351 return manage(res);
17352}
17353
17354pw_aff_list union_pw_aff::get_pw_aff_list() const
17355{
17356 auto res = isl_union_pw_aff_get_pw_aff_list(get());
17357 return manage(res);
17358}
17359
17360space union_pw_aff::get_space() const
17361{
17362 auto res = isl_union_pw_aff_get_space(get());
17363 return manage(res);
17364}
17365
17366union_pw_aff union_pw_aff::gist(union_set context) const
17367{
17368 auto res = isl_union_pw_aff_gist(copy(), context.release());
17369 return manage(res);
17370}
17371
17372union_pw_aff union_pw_aff::gist_params(set context) const
17373{
17374 auto res = isl_union_pw_aff_gist_params(copy(), context.release());
17375 return manage(res);
17376}
17377
17378union_pw_aff union_pw_aff::intersect_domain(union_set uset) const
17379{
17380 auto res = isl_union_pw_aff_intersect_domain(copy(), uset.release());
17381 return manage(res);
17382}
17383
17384union_pw_aff union_pw_aff::intersect_params(set set) const
17385{
17386 auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
17387 return manage(res);
17388}
17389
17390boolean union_pw_aff::involves_nan() const
17391{
17392 auto res = isl_union_pw_aff_involves_nan(get());
17393 return manage(res);
17394}
17395
17396val union_pw_aff::max_val() const
17397{
17398 auto res = isl_union_pw_aff_max_val(copy());
17399 return manage(res);
17400}
17401
17402val union_pw_aff::min_val() const
17403{
17404 auto res = isl_union_pw_aff_min_val(copy());
17405 return manage(res);
17406}
17407
17408union_pw_aff union_pw_aff::mod_val(val f) const
17409{
17410 auto res = isl_union_pw_aff_mod_val(copy(), f.release());
17411 return manage(res);
17412}
17413
17414int union_pw_aff::n_pw_aff() const
17415{
17416 auto res = isl_union_pw_aff_n_pw_aff(get());
17417 return res;
17418}
17419
17420union_pw_aff union_pw_aff::neg() const
17421{
17422 auto res = isl_union_pw_aff_neg(copy());
17423 return manage(res);
17424}
17425
17426union_pw_aff union_pw_aff::param_on_domain_id(union_set domain, id id)
17427{
17428 auto res = isl_union_pw_aff_param_on_domain_id(domain.release(), id.release());
17429 return manage(res);
17430}
17431
17432boolean union_pw_aff::plain_is_equal(const union_pw_aff &upa2) const
17433{
17434 auto res = isl_union_pw_aff_plain_is_equal(get(), upa2.get());
17435 return manage(res);
17436}
17437
17438union_pw_aff union_pw_aff::pullback(union_pw_multi_aff upma) const
17439{
17440 auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
17441 return manage(res);
17442}
17443
17444union_pw_aff union_pw_aff::pw_aff_on_domain(union_set domain, pw_aff pa)
17445{
17446 auto res = isl_union_pw_aff_pw_aff_on_domain(domain.release(), pa.release());
17447 return manage(res);
17448}
17449
17450union_pw_aff union_pw_aff::reset_user() const
17451{
17452 auto res = isl_union_pw_aff_reset_user(copy());
17453 return manage(res);
17454}
17455
17456union_pw_aff union_pw_aff::scale_down_val(val v) const
17457{
17458 auto res = isl_union_pw_aff_scale_down_val(copy(), v.release());
17459 return manage(res);
17460}
17461
17462union_pw_aff union_pw_aff::scale_val(val v) const
17463{
17464 auto res = isl_union_pw_aff_scale_val(copy(), v.release());
17465 return manage(res);
17466}
17467
17468union_pw_aff union_pw_aff::sub(union_pw_aff upa2) const
17469{
17470 auto res = isl_union_pw_aff_sub(copy(), upa2.release());
17471 return manage(res);
17472}
17473
17474union_pw_aff union_pw_aff::subtract_domain(union_set uset) const
17475{
17476 auto res = isl_union_pw_aff_subtract_domain(copy(), uset.release());
17477 return manage(res);
17478}
17479
17480union_pw_aff union_pw_aff::union_add(union_pw_aff upa2) const
17481{
17482 auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
17483 return manage(res);
17484}
17485
17486union_set union_pw_aff::zero_union_set() const
17487{
17488 auto res = isl_union_pw_aff_zero_union_set(copy());
17489 return manage(res);
17490}
17491
17492// implementations for isl::union_pw_aff_list
17493union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
17494 return union_pw_aff_list(ptr);
17495}
17496union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
17497 ptr = isl_union_pw_aff_list_copy(ptr);
17498 return union_pw_aff_list(ptr);
17499}
17500
17501union_pw_aff_list::union_pw_aff_list()
17502 : ptr(nullptr) {}
17503
17504union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
17505 : ptr(nullptr)
17506{
17507 ptr = obj.copy();
17508}
17509union_pw_aff_list::union_pw_aff_list(std::nullptr_t)
17510 : ptr(nullptr) {}
17511
17512
17513union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
17514 : ptr(ptr) {}
17515
17516
17517union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
17518 std::swap(this->ptr, obj.ptr);
17519 return *this;
17520}
17521
17522union_pw_aff_list::~union_pw_aff_list() {
17523 if (ptr)
17524 isl_union_pw_aff_list_free(ptr);
17525}
17526
17527__isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
17528 return isl_union_pw_aff_list_copy(ptr);
17529}
17530
17531__isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
17532 return ptr;
17533}
17534
17535__isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
17536 isl_union_pw_aff_list *tmp = ptr;
17537 ptr = nullptr;
17538 return tmp;
17539}
17540
17541bool union_pw_aff_list::is_null() const {
17542 return ptr == nullptr;
17543}
17544union_pw_aff_list::operator bool() const {
17545 return !is_null();
17546}
17547
17548
17549ctx union_pw_aff_list::get_ctx() const {
17550 return ctx(isl_union_pw_aff_list_get_ctx(ptr));
17551}
17552
17553void union_pw_aff_list::dump() const {
17554 isl_union_pw_aff_list_dump(get());
17555}
17556
17557
17558union_pw_aff_list union_pw_aff_list::add(union_pw_aff el) const
17559{
17560 auto res = isl_union_pw_aff_list_add(copy(), el.release());
17561 return manage(res);
17562}
17563
17564union_pw_aff_list union_pw_aff_list::alloc(ctx ctx, int n)
17565{
17566 auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
17567 return manage(res);
17568}
17569
17570union_pw_aff_list union_pw_aff_list::concat(union_pw_aff_list list2) const
17571{
17572 auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
17573 return manage(res);
17574}
17575
17576union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
17577{
17578 auto res = isl_union_pw_aff_list_drop(copy(), first, n);
17579 return manage(res);
17580}
17581
17582stat union_pw_aff_list::foreach(const std::function<stat(union_pw_aff)> &fn) const
17583{
17584 struct fn_data {
17585 const std::function<stat(union_pw_aff)> *func;
17586 } fn_data = { &fn };
17587 auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
17588 auto *data = static_cast<struct fn_data *>(arg_1);
17589 stat ret = (*data->func)(manage(arg_0));
17590 return ret.release();
17591 };
17592 auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
17593 return manage(res);
17594}
17595
17596union_pw_aff_list union_pw_aff_list::from_union_pw_aff(union_pw_aff el)
17597{
17598 auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
17599 return manage(res);
17600}
17601
17602union_pw_aff union_pw_aff_list::get_at(int index) const
17603{
17604 auto res = isl_union_pw_aff_list_get_at(get(), index);
17605 return manage(res);
17606}
17607
17608union_pw_aff union_pw_aff_list::get_union_pw_aff(int index) const
17609{
17610 auto res = isl_union_pw_aff_list_get_union_pw_aff(get(), index);
17611 return manage(res);
17612}
17613
17614union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, union_pw_aff el) const
17615{
17616 auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
17617 return manage(res);
17618}
17619
17620int union_pw_aff_list::n_union_pw_aff() const
17621{
17622 auto res = isl_union_pw_aff_list_n_union_pw_aff(get());
17623 return res;
17624}
17625
17626union_pw_aff_list union_pw_aff_list::reverse() const
17627{
17628 auto res = isl_union_pw_aff_list_reverse(copy());
17629 return manage(res);
17630}
17631
17632union_pw_aff_list union_pw_aff_list::set_union_pw_aff(int index, union_pw_aff el) const
17633{
17634 auto res = isl_union_pw_aff_list_set_union_pw_aff(copy(), index, el.release());
17635 return manage(res);
17636}
17637
17638int union_pw_aff_list::size() const
17639{
17640 auto res = isl_union_pw_aff_list_size(get());
17641 return res;
17642}
17643
17644union_pw_aff_list union_pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const
17645{
17646 auto res = isl_union_pw_aff_list_swap(copy(), pos1, pos2);
17647 return manage(res);
17648}
17649
17650// implementations for isl::union_pw_multi_aff
17651union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
17652 return union_pw_multi_aff(ptr);
17653}
17654union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
17655 ptr = isl_union_pw_multi_aff_copy(ptr);
17656 return union_pw_multi_aff(ptr);
17657}
17658
17659union_pw_multi_aff::union_pw_multi_aff()
17660 : ptr(nullptr) {}
17661
17662union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
17663 : ptr(nullptr)
17664{
17665 ptr = obj.copy();
17666}
17667union_pw_multi_aff::union_pw_multi_aff(std::nullptr_t)
17668 : ptr(nullptr) {}
17669
17670
17671union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
17672 : ptr(ptr) {}
17673
17674union_pw_multi_aff::union_pw_multi_aff(aff aff)
17675{
17676 auto res = isl_union_pw_multi_aff_from_aff(aff.release());
17677 ptr = res;
17678}
17679union_pw_multi_aff::union_pw_multi_aff(pw_multi_aff pma)
17680{
17681 auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
17682 ptr = res;
17683}
17684union_pw_multi_aff::union_pw_multi_aff(union_set uset)
17685{
17686 auto res = isl_union_pw_multi_aff_from_domain(uset.release());
17687 ptr = res;
17688}
17689union_pw_multi_aff::union_pw_multi_aff(union_map umap)
17690{
17691 auto res = isl_union_pw_multi_aff_from_union_map(umap.release());
17692 ptr = res;
17693}
17694union_pw_multi_aff::union_pw_multi_aff(ctx ctx, const std::string &str)
17695{
17696 auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
17697 ptr = res;
17698}
17699union_pw_multi_aff::union_pw_multi_aff(union_pw_aff upa)
17700{
17701 auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
17702 ptr = res;
17703}
17704union_pw_multi_aff::union_pw_multi_aff(multi_union_pw_aff mupa)
17705{
17706 auto res = isl_union_pw_multi_aff_from_multi_union_pw_aff(mupa.release());
17707 ptr = res;
17708}
17709
17710union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
17711 std::swap(this->ptr, obj.ptr);
17712 return *this;
17713}
17714
17715union_pw_multi_aff::~union_pw_multi_aff() {
17716 if (ptr)
17717 isl_union_pw_multi_aff_free(ptr);
17718}
17719
17720__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
17721 return isl_union_pw_multi_aff_copy(ptr);
17722}
17723
17724__isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
17725 return ptr;
17726}
17727
17728__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
17729 isl_union_pw_multi_aff *tmp = ptr;
17730 ptr = nullptr;
17731 return tmp;
17732}
17733
17734bool union_pw_multi_aff::is_null() const {
17735 return ptr == nullptr;
17736}
17737union_pw_multi_aff::operator bool() const {
17738 return !is_null();
17739}
17740
17741
17742ctx union_pw_multi_aff::get_ctx() const {
17743 return ctx(isl_union_pw_multi_aff_get_ctx(ptr));
17744}
17745std::string union_pw_multi_aff::to_str() const {
17746 char *Tmp = isl_union_pw_multi_aff_to_str(get());
17747 if (!Tmp)
17748 return "";
17749 std::string S(Tmp);
17750 free(Tmp);
17751 return S;
17752}
17753
17754
17755void union_pw_multi_aff::dump() const {
17756 isl_union_pw_multi_aff_dump(get());
17757}
17758
17759
17760union_pw_multi_aff union_pw_multi_aff::add(union_pw_multi_aff upma2) const
17761{
17762 auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
17763 return manage(res);
17764}
17765
17766union_pw_multi_aff union_pw_multi_aff::add_pw_multi_aff(pw_multi_aff pma) const
17767{
17768 auto res = isl_union_pw_multi_aff_add_pw_multi_aff(copy(), pma.release());
17769 return manage(res);
17770}
17771
17772union_pw_multi_aff union_pw_multi_aff::align_params(space model) const
17773{
17774 auto res = isl_union_pw_multi_aff_align_params(copy(), model.release());
17775 return manage(res);
17776}
17777
17778union_pw_multi_aff union_pw_multi_aff::coalesce() const
17779{
17780 auto res = isl_union_pw_multi_aff_coalesce(copy());
17781 return manage(res);
17782}
17783
17784unsigned int union_pw_multi_aff::dim(isl::dim type) const
17785{
17786 auto res = isl_union_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
17787 return res;
17788}
17789
17790union_set union_pw_multi_aff::domain() const
17791{
17792 auto res = isl_union_pw_multi_aff_domain(copy());
17793 return manage(res);
17794}
17795
17796union_pw_multi_aff union_pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
17797{
17798 auto res = isl_union_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
17799 return manage(res);
17800}
17801
17802union_pw_multi_aff union_pw_multi_aff::empty(space space)
17803{
17804 auto res = isl_union_pw_multi_aff_empty(space.release());
17805 return manage(res);
17806}
17807
17808pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(space space) const
17809{
17810 auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
17811 return manage(res);
17812}
17813
17814int union_pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
17815{
17816 auto res = isl_union_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
17817 return res;
17818}
17819
17820union_pw_multi_aff union_pw_multi_aff::flat_range_product(union_pw_multi_aff upma2) const
17821{
17822 auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
17823 return manage(res);
17824}
17825
17826stat union_pw_multi_aff::foreach_pw_multi_aff(const std::function<stat(pw_multi_aff)> &fn) const
17827{
17828 struct fn_data {
17829 const std::function<stat(pw_multi_aff)> *func;
17830 } fn_data = { &fn };
17831 auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
17832 auto *data = static_cast<struct fn_data *>(arg_1);
17833 stat ret = (*data->func)(manage(arg_0));
17834 return ret.release();
17835 };
17836 auto res = isl_union_pw_multi_aff_foreach_pw_multi_aff(get(), fn_lambda, &fn_data);
17837 return manage(res);
17838}
17839
17840union_pw_multi_aff union_pw_multi_aff::from_union_set(union_set uset)
17841{
17842 auto res = isl_union_pw_multi_aff_from_union_set(uset.release());
17843 return manage(res);
17844}
17845
17846pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
17847{
17848 auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
17849 return manage(res);
17850}
17851
17852space union_pw_multi_aff::get_space() const
17853{
17854 auto res = isl_union_pw_multi_aff_get_space(get());
17855 return manage(res);
17856}
17857
17858union_pw_aff union_pw_multi_aff::get_union_pw_aff(int pos) const
17859{
17860 auto res = isl_union_pw_multi_aff_get_union_pw_aff(get(), pos);
17861 return manage(res);
17862}
17863
17864union_pw_multi_aff union_pw_multi_aff::gist(union_set context) const
17865{
17866 auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
17867 return manage(res);
17868}
17869
17870union_pw_multi_aff union_pw_multi_aff::gist_params(set context) const
17871{
17872 auto res = isl_union_pw_multi_aff_gist_params(copy(), context.release());
17873 return manage(res);
17874}
17875
17876union_pw_multi_aff union_pw_multi_aff::intersect_domain(union_set uset) const
17877{
17878 auto res = isl_union_pw_multi_aff_intersect_domain(copy(), uset.release());
17879 return manage(res);
17880}
17881
17882union_pw_multi_aff union_pw_multi_aff::intersect_params(set set) const
17883{
17884 auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
17885 return manage(res);
17886}
17887
17888boolean union_pw_multi_aff::involves_nan() const
17889{
17890 auto res = isl_union_pw_multi_aff_involves_nan(get());
17891 return manage(res);
17892}
17893
17894union_pw_multi_aff union_pw_multi_aff::multi_val_on_domain(union_set domain, multi_val mv)
17895{
17896 auto res = isl_union_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
17897 return manage(res);
17898}
17899
17900int union_pw_multi_aff::n_pw_multi_aff() const
17901{
17902 auto res = isl_union_pw_multi_aff_n_pw_multi_aff(get());
17903 return res;
17904}
17905
17906union_pw_multi_aff union_pw_multi_aff::neg() const
17907{
17908 auto res = isl_union_pw_multi_aff_neg(copy());
17909 return manage(res);
17910}
17911
17912boolean union_pw_multi_aff::plain_is_equal(const union_pw_multi_aff &upma2) const
17913{
17914 auto res = isl_union_pw_multi_aff_plain_is_equal(get(), upma2.get());
17915 return manage(res);
17916}
17917
17918union_pw_multi_aff union_pw_multi_aff::pullback(union_pw_multi_aff upma2) const
17919{
17920 auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
17921 return manage(res);
17922}
17923
17924union_pw_multi_aff union_pw_multi_aff::reset_user() const
17925{
17926 auto res = isl_union_pw_multi_aff_reset_user(copy());
17927 return manage(res);
17928}
17929
17930union_pw_multi_aff union_pw_multi_aff::scale_down_val(val val) const
17931{
17932 auto res = isl_union_pw_multi_aff_scale_down_val(copy(), val.release());
17933 return manage(res);
17934}
17935
17936union_pw_multi_aff union_pw_multi_aff::scale_multi_val(multi_val mv) const
17937{
17938 auto res = isl_union_pw_multi_aff_scale_multi_val(copy(), mv.release());
17939 return manage(res);
17940}
17941
17942union_pw_multi_aff union_pw_multi_aff::scale_val(val val) const
17943{
17944 auto res = isl_union_pw_multi_aff_scale_val(copy(), val.release());
17945 return manage(res);
17946}
17947
17948union_pw_multi_aff union_pw_multi_aff::sub(union_pw_multi_aff upma2) const
17949{
17950 auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
17951 return manage(res);
17952}
17953
17954union_pw_multi_aff union_pw_multi_aff::subtract_domain(union_set uset) const
17955{
17956 auto res = isl_union_pw_multi_aff_subtract_domain(copy(), uset.release());
17957 return manage(res);
17958}
17959
17960union_pw_multi_aff union_pw_multi_aff::union_add(union_pw_multi_aff upma2) const
17961{
17962 auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
17963 return manage(res);
17964}
17965
17966// implementations for isl::union_pw_multi_aff_list
17967union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr) {
17968 return union_pw_multi_aff_list(ptr);
17969}
17970union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr) {
17971 ptr = isl_union_pw_multi_aff_list_copy(ptr);
17972 return union_pw_multi_aff_list(ptr);
17973}
17974
17975union_pw_multi_aff_list::union_pw_multi_aff_list()
17976 : ptr(nullptr) {}
17977
17978union_pw_multi_aff_list::union_pw_multi_aff_list(const union_pw_multi_aff_list &obj)
17979 : ptr(nullptr)
17980{
17981 ptr = obj.copy();
17982}
17983union_pw_multi_aff_list::union_pw_multi_aff_list(std::nullptr_t)
17984 : ptr(nullptr) {}
17985
17986
17987union_pw_multi_aff_list::union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr)
17988 : ptr(ptr) {}
17989
17990
17991union_pw_multi_aff_list &union_pw_multi_aff_list::operator=(union_pw_multi_aff_list obj) {
17992 std::swap(this->ptr, obj.ptr);
17993 return *this;
17994}
17995
17996union_pw_multi_aff_list::~union_pw_multi_aff_list() {
17997 if (ptr)
17998 isl_union_pw_multi_aff_list_free(ptr);
17999}
18000
18001__isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::copy() const & {
18002 return isl_union_pw_multi_aff_list_copy(ptr);
18003}
18004
18005__isl_keep isl_union_pw_multi_aff_list *union_pw_multi_aff_list::get() const {
18006 return ptr;
18007}
18008
18009__isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::release() {
18010 isl_union_pw_multi_aff_list *tmp = ptr;
18011 ptr = nullptr;
18012 return tmp;
18013}
18014
18015bool union_pw_multi_aff_list::is_null() const {
18016 return ptr == nullptr;
18017}
18018union_pw_multi_aff_list::operator bool() const {
18019 return !is_null();
18020}
18021
18022
18023ctx union_pw_multi_aff_list::get_ctx() const {
18024 return ctx(isl_union_pw_multi_aff_list_get_ctx(ptr));
18025}
18026
18027void union_pw_multi_aff_list::dump() const {
18028 isl_union_pw_multi_aff_list_dump(get());
18029}
18030
18031
18032union_pw_multi_aff_list union_pw_multi_aff_list::add(union_pw_multi_aff el) const
18033{
18034 auto res = isl_union_pw_multi_aff_list_add(copy(), el.release());
18035 return manage(res);
18036}
18037
18038union_pw_multi_aff_list union_pw_multi_aff_list::alloc(ctx ctx, int n)
18039{
18040 auto res = isl_union_pw_multi_aff_list_alloc(ctx.release(), n);
18041 return manage(res);
18042}
18043
18044union_pw_multi_aff_list union_pw_multi_aff_list::concat(union_pw_multi_aff_list list2) const
18045{
18046 auto res = isl_union_pw_multi_aff_list_concat(copy(), list2.release());
18047 return manage(res);
18048}
18049
18050union_pw_multi_aff_list union_pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
18051{
18052 auto res = isl_union_pw_multi_aff_list_drop(copy(), first, n);
18053 return manage(res);
18054}
18055
18056stat union_pw_multi_aff_list::foreach(const std::function<stat(union_pw_multi_aff)> &fn) const
18057{
18058 struct fn_data {
18059 const std::function<stat(union_pw_multi_aff)> *func;
18060 } fn_data = { &fn };
18061 auto fn_lambda = [](isl_union_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
18062 auto *data = static_cast<struct fn_data *>(arg_1);
18063 stat ret = (*data->func)(manage(arg_0));
18064 return ret.release();
18065 };
18066 auto res = isl_union_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
18067 return manage(res);
18068}
18069
18070union_pw_multi_aff_list union_pw_multi_aff_list::from_union_pw_multi_aff(union_pw_multi_aff el)
18071{
18072 auto res = isl_union_pw_multi_aff_list_from_union_pw_multi_aff(el.release());
18073 return manage(res);
18074}
18075
18076union_pw_multi_aff union_pw_multi_aff_list::get_at(int index) const
18077{
18078 auto res = isl_union_pw_multi_aff_list_get_at(get(), index);
18079 return manage(res);
18080}
18081
18082union_pw_multi_aff union_pw_multi_aff_list::get_union_pw_multi_aff(int index) const
18083{
18084 auto res = isl_union_pw_multi_aff_list_get_union_pw_multi_aff(get(), index);
18085 return manage(res);
18086}
18087
18088union_pw_multi_aff_list union_pw_multi_aff_list::insert(unsigned int pos, union_pw_multi_aff el) const
18089{
18090 auto res = isl_union_pw_multi_aff_list_insert(copy(), pos, el.release());
18091 return manage(res);
18092}
18093
18094int union_pw_multi_aff_list::n_union_pw_multi_aff() const
18095{
18096 auto res = isl_union_pw_multi_aff_list_n_union_pw_multi_aff(get());
18097 return res;
18098}
18099
18100union_pw_multi_aff_list union_pw_multi_aff_list::reverse() const
18101{
18102 auto res = isl_union_pw_multi_aff_list_reverse(copy());
18103 return manage(res);
18104}
18105
18106union_pw_multi_aff_list union_pw_multi_aff_list::set_union_pw_multi_aff(int index, union_pw_multi_aff el) const
18107{
18108 auto res = isl_union_pw_multi_aff_list_set_union_pw_multi_aff(copy(), index, el.release());
18109 return manage(res);
18110}
18111
18112int union_pw_multi_aff_list::size() const
18113{
18114 auto res = isl_union_pw_multi_aff_list_size(get());
18115 return res;
18116}
18117
18118union_pw_multi_aff_list union_pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const
18119{
18120 auto res = isl_union_pw_multi_aff_list_swap(copy(), pos1, pos2);
18121 return manage(res);
18122}
18123
18124// implementations for isl::union_pw_qpolynomial
18125union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr) {
18126 return union_pw_qpolynomial(ptr);
18127}
18128union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr) {
18129 ptr = isl_union_pw_qpolynomial_copy(ptr);
18130 return union_pw_qpolynomial(ptr);
18131}
18132
18133union_pw_qpolynomial::union_pw_qpolynomial()
18134 : ptr(nullptr) {}
18135
18136union_pw_qpolynomial::union_pw_qpolynomial(const union_pw_qpolynomial &obj)
18137 : ptr(nullptr)
18138{
18139 ptr = obj.copy();
18140}
18141union_pw_qpolynomial::union_pw_qpolynomial(std::nullptr_t)
18142 : ptr(nullptr) {}
18143
18144
18145union_pw_qpolynomial::union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr)
18146 : ptr(ptr) {}
18147
18148union_pw_qpolynomial::union_pw_qpolynomial(ctx ctx, const std::string &str)
18149{
18150 auto res = isl_union_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
18151 ptr = res;
18152}
18153
18154union_pw_qpolynomial &union_pw_qpolynomial::operator=(union_pw_qpolynomial obj) {
18155 std::swap(this->ptr, obj.ptr);
18156 return *this;
18157}
18158
18159union_pw_qpolynomial::~union_pw_qpolynomial() {
18160 if (ptr)
18161 isl_union_pw_qpolynomial_free(ptr);
18162}
18163
18164__isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::copy() const & {
18165 return isl_union_pw_qpolynomial_copy(ptr);
18166}
18167
18168__isl_keep isl_union_pw_qpolynomial *union_pw_qpolynomial::get() const {
18169 return ptr;
18170}
18171
18172__isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::release() {
18173 isl_union_pw_qpolynomial *tmp = ptr;
18174 ptr = nullptr;
18175 return tmp;
18176}
18177
18178bool union_pw_qpolynomial::is_null() const {
18179 return ptr == nullptr;
18180}
18181union_pw_qpolynomial::operator bool() const {
18182 return !is_null();
18183}
18184
18185
18186ctx union_pw_qpolynomial::get_ctx() const {
18187 return ctx(isl_union_pw_qpolynomial_get_ctx(ptr));
18188}
18189std::string union_pw_qpolynomial::to_str() const {
18190 char *Tmp = isl_union_pw_qpolynomial_to_str(get());
18191 if (!Tmp)
18192 return "";
18193 std::string S(Tmp);
18194 free(Tmp);
18195 return S;
18196}
18197
18198
18199
18200union_pw_qpolynomial union_pw_qpolynomial::add(union_pw_qpolynomial upwqp2) const
18201{
18202 auto res = isl_union_pw_qpolynomial_add(copy(), upwqp2.release());
18203 return manage(res);
18204}
18205
18206union_pw_qpolynomial union_pw_qpolynomial::add_pw_qpolynomial(pw_qpolynomial pwqp) const
18207{
18208 auto res = isl_union_pw_qpolynomial_add_pw_qpolynomial(copy(), pwqp.release());
18209 return manage(res);
18210}
18211
18212union_pw_qpolynomial union_pw_qpolynomial::align_params(space model) const
18213{
18214 auto res = isl_union_pw_qpolynomial_align_params(copy(), model.release());
18215 return manage(res);
18216}
18217
18218union_pw_qpolynomial union_pw_qpolynomial::coalesce() const
18219{
18220 auto res = isl_union_pw_qpolynomial_coalesce(copy());
18221 return manage(res);
18222}
18223
18224unsigned int union_pw_qpolynomial::dim(isl::dim type) const
18225{
18226 auto res = isl_union_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
18227 return res;
18228}
18229
18230union_set union_pw_qpolynomial::domain() const
18231{
18232 auto res = isl_union_pw_qpolynomial_domain(copy());
18233 return manage(res);
18234}
18235
18236union_pw_qpolynomial union_pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
18237{
18238 auto res = isl_union_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
18239 return manage(res);
18240}
18241
18242val union_pw_qpolynomial::eval(point pnt) const
18243{
18244 auto res = isl_union_pw_qpolynomial_eval(copy(), pnt.release());
18245 return manage(res);
18246}
18247
18248pw_qpolynomial union_pw_qpolynomial::extract_pw_qpolynomial(space dim) const
18249{
18250 auto res = isl_union_pw_qpolynomial_extract_pw_qpolynomial(get(), dim.release());
18251 return manage(res);
18252}
18253
18254int union_pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const
18255{
18256 auto res = isl_union_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
18257 return res;
18258}
18259
18260stat union_pw_qpolynomial::foreach_pw_qpolynomial(const std::function<stat(pw_qpolynomial)> &fn) const
18261{
18262 struct fn_data {
18263 const std::function<stat(pw_qpolynomial)> *func;
18264 } fn_data = { &fn };
18265 auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat {
18266 auto *data = static_cast<struct fn_data *>(arg_1);
18267 stat ret = (*data->func)(manage(arg_0));
18268 return ret.release();
18269 };
18270 auto res = isl_union_pw_qpolynomial_foreach_pw_qpolynomial(get(), fn_lambda, &fn_data);
18271 return manage(res);
18272}
18273
18274union_pw_qpolynomial union_pw_qpolynomial::from_pw_qpolynomial(pw_qpolynomial pwqp)
18275{
18276 auto res = isl_union_pw_qpolynomial_from_pw_qpolynomial(pwqp.release());
18277 return manage(res);
18278}
18279
18280pw_qpolynomial_list union_pw_qpolynomial::get_pw_qpolynomial_list() const
18281{
18282 auto res = isl_union_pw_qpolynomial_get_pw_qpolynomial_list(get());
18283 return manage(res);
18284}
18285
18286space union_pw_qpolynomial::get_space() const
18287{
18288 auto res = isl_union_pw_qpolynomial_get_space(get());
18289 return manage(res);
18290}
18291
18292union_pw_qpolynomial union_pw_qpolynomial::gist(union_set context) const
18293{
18294 auto res = isl_union_pw_qpolynomial_gist(copy(), context.release());
18295 return manage(res);
18296}
18297
18298union_pw_qpolynomial union_pw_qpolynomial::gist_params(set context) const
18299{
18300 auto res = isl_union_pw_qpolynomial_gist_params(copy(), context.release());
18301 return manage(res);
18302}
18303
18304union_pw_qpolynomial union_pw_qpolynomial::intersect_domain(union_set uset) const
18305{
18306 auto res = isl_union_pw_qpolynomial_intersect_domain(copy(), uset.release());
18307 return manage(res);
18308}
18309
18310union_pw_qpolynomial union_pw_qpolynomial::intersect_params(set set) const
18311{
18312 auto res = isl_union_pw_qpolynomial_intersect_params(copy(), set.release());
18313 return manage(res);
18314}
18315
18316boolean union_pw_qpolynomial::involves_nan() const
18317{
18318 auto res = isl_union_pw_qpolynomial_involves_nan(get());
18319 return manage(res);
18320}
18321
18322union_pw_qpolynomial union_pw_qpolynomial::mul(union_pw_qpolynomial upwqp2) const
18323{
18324 auto res = isl_union_pw_qpolynomial_mul(copy(), upwqp2.release());
18325 return manage(res);
18326}
18327
18328int union_pw_qpolynomial::n_pw_qpolynomial() const
18329{
18330 auto res = isl_union_pw_qpolynomial_n_pw_qpolynomial(get());
18331 return res;
18332}
18333
18334union_pw_qpolynomial union_pw_qpolynomial::neg() const
18335{
18336 auto res = isl_union_pw_qpolynomial_neg(copy());
18337 return manage(res);
18338}
18339
18340boolean union_pw_qpolynomial::plain_is_equal(const union_pw_qpolynomial &upwqp2) const
18341{
18342 auto res = isl_union_pw_qpolynomial_plain_is_equal(get(), upwqp2.get());
18343 return manage(res);
18344}
18345
18346union_pw_qpolynomial union_pw_qpolynomial::reset_user() const
18347{
18348 auto res = isl_union_pw_qpolynomial_reset_user(copy());
18349 return manage(res);
18350}
18351
18352union_pw_qpolynomial union_pw_qpolynomial::scale_down_val(val v) const
18353{
18354 auto res = isl_union_pw_qpolynomial_scale_down_val(copy(), v.release());
18355 return manage(res);
18356}
18357
18358union_pw_qpolynomial union_pw_qpolynomial::scale_val(val v) const
18359{
18360 auto res = isl_union_pw_qpolynomial_scale_val(copy(), v.release());
18361 return manage(res);
18362}
18363
18364union_pw_qpolynomial union_pw_qpolynomial::sub(union_pw_qpolynomial upwqp2) const
18365{
18366 auto res = isl_union_pw_qpolynomial_sub(copy(), upwqp2.release());
18367 return manage(res);
18368}
18369
18370union_pw_qpolynomial union_pw_qpolynomial::subtract_domain(union_set uset) const
18371{
18372 auto res = isl_union_pw_qpolynomial_subtract_domain(copy(), uset.release());
18373 return manage(res);
18374}
18375
18376union_pw_qpolynomial union_pw_qpolynomial::to_polynomial(int sign) const
18377{
18378 auto res = isl_union_pw_qpolynomial_to_polynomial(copy(), sign);
18379 return manage(res);
18380}
18381
18382union_pw_qpolynomial union_pw_qpolynomial::zero(space dim)
18383{
18384 auto res = isl_union_pw_qpolynomial_zero(dim.release());
18385 return manage(res);
18386}
18387
18388// implementations for isl::union_set
18389union_set manage(__isl_take isl_union_set *ptr) {
18390 return union_set(ptr);
18391}
18392union_set manage_copy(__isl_keep isl_union_set *ptr) {
18393 ptr = isl_union_set_copy(ptr);
18394 return union_set(ptr);
18395}
18396
18397union_set::union_set()
18398 : ptr(nullptr) {}
18399
18400union_set::union_set(const union_set &obj)
18401 : ptr(nullptr)
18402{
18403 ptr = obj.copy();
18404}
18405union_set::union_set(std::nullptr_t)
18406 : ptr(nullptr) {}
18407
18408
18409union_set::union_set(__isl_take isl_union_set *ptr)
18410 : ptr(ptr) {}
18411
18412union_set::union_set(basic_set bset)
18413{
18414 auto res = isl_union_set_from_basic_set(bset.release());
18415 ptr = res;
18416}
18417union_set::union_set(set set)
18418{
18419 auto res = isl_union_set_from_set(set.release());
18420 ptr = res;
18421}
18422union_set::union_set(point pnt)
18423{
18424 auto res = isl_union_set_from_point(pnt.release());
18425 ptr = res;
18426}
18427union_set::union_set(ctx ctx, const std::string &str)
18428{
18429 auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
18430 ptr = res;
18431}
18432
18433union_set &union_set::operator=(union_set obj) {
18434 std::swap(this->ptr, obj.ptr);
18435 return *this;
18436}
18437
18438union_set::~union_set() {
18439 if (ptr)
18440 isl_union_set_free(ptr);
18441}
18442
18443__isl_give isl_union_set *union_set::copy() const & {
18444 return isl_union_set_copy(ptr);
18445}
18446
18447__isl_keep isl_union_set *union_set::get() const {
18448 return ptr;
18449}
18450
18451__isl_give isl_union_set *union_set::release() {
18452 isl_union_set *tmp = ptr;
18453 ptr = nullptr;
18454 return tmp;
18455}
18456
18457bool union_set::is_null() const {
18458 return ptr == nullptr;
18459}
18460union_set::operator bool() const {
18461 return !is_null();
18462}
18463
18464
18465ctx union_set::get_ctx() const {
18466 return ctx(isl_union_set_get_ctx(ptr));
18467}
18468std::string union_set::to_str() const {
18469 char *Tmp = isl_union_set_to_str(get());
18470 if (!Tmp)
18471 return "";
18472 std::string S(Tmp);
18473 free(Tmp);
18474 return S;
18475}
18476
18477
18478void union_set::dump() const {
18479 isl_union_set_dump(get());
18480}
18481
18482
18483union_set union_set::add_set(set set) const
18484{
18485 auto res = isl_union_set_add_set(copy(), set.release());
18486 return manage(res);
18487}
18488
18489union_set union_set::affine_hull() const
18490{
18491 auto res = isl_union_set_affine_hull(copy());
18492 return manage(res);
18493}
18494
18495union_set union_set::align_params(space model) const
18496{
18497 auto res = isl_union_set_align_params(copy(), model.release());
18498 return manage(res);
18499}
18500
18501union_set union_set::apply(union_map umap) const
18502{
18503 auto res = isl_union_set_apply(copy(), umap.release());
18504 return manage(res);
18505}
18506
18507union_set union_set::coalesce() const
18508{
18509 auto res = isl_union_set_coalesce(copy());
18510 return manage(res);
18511}
18512
18513union_set union_set::coefficients() const
18514{
18515 auto res = isl_union_set_coefficients(copy());
18516 return manage(res);
18517}
18518
18519schedule union_set::compute_schedule(union_map validity, union_map proximity) const
18520{
18521 auto res = isl_union_set_compute_schedule(copy(), validity.release(), proximity.release());
18522 return manage(res);
18523}
18524
18525boolean union_set::contains(const space &space) const
18526{
18527 auto res = isl_union_set_contains(get(), space.get());
18528 return manage(res);
18529}
18530
18531union_set union_set::detect_equalities() const
18532{
18533 auto res = isl_union_set_detect_equalities(copy());
18534 return manage(res);
18535}
18536
18537unsigned int union_set::dim(isl::dim type) const
18538{
18539 auto res = isl_union_set_dim(get(), static_cast<enum isl_dim_type>(type));
18540 return res;
18541}
18542
18543union_set union_set::empty(space space)
18544{
18545 auto res = isl_union_set_empty(space.release());
18546 return manage(res);
18547}
18548
18549set union_set::extract_set(space dim) const
18550{
18551 auto res = isl_union_set_extract_set(get(), dim.release());
18552 return manage(res);
18553}
18554
18555stat union_set::foreach_point(const std::function<stat(point)> &fn) const
18556{
18557 struct fn_data {
18558 const std::function<stat(point)> *func;
18559 } fn_data = { &fn };
18560 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
18561 auto *data = static_cast<struct fn_data *>(arg_1);
18562 stat ret = (*data->func)(manage(arg_0));
18563 return ret.release();
18564 };
18565 auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
18566 return manage(res);
18567}
18568
18569stat union_set::foreach_set(const std::function<stat(set)> &fn) const
18570{
18571 struct fn_data {
18572 const std::function<stat(set)> *func;
18573 } fn_data = { &fn };
18574 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
18575 auto *data = static_cast<struct fn_data *>(arg_1);
18576 stat ret = (*data->func)(manage(arg_0));
18577 return ret.release();
18578 };
18579 auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
18580 return manage(res);
18581}
18582
18583basic_set_list union_set::get_basic_set_list() const
18584{
18585 auto res = isl_union_set_get_basic_set_list(get());
18586 return manage(res);
18587}
18588
18589uint32_t union_set::get_hash() const
18590{
18591 auto res = isl_union_set_get_hash(get());
18592 return res;
18593}
18594
18595set_list union_set::get_set_list() const
18596{
18597 auto res = isl_union_set_get_set_list(get());
18598 return manage(res);
18599}
18600
18601space union_set::get_space() const
18602{
18603 auto res = isl_union_set_get_space(get());
18604 return manage(res);
18605}
18606
18607union_set union_set::gist(union_set context) const
18608{
18609 auto res = isl_union_set_gist(copy(), context.release());
18610 return manage(res);
18611}
18612
18613union_set union_set::gist_params(set set) const
18614{
18615 auto res = isl_union_set_gist_params(copy(), set.release());
18616 return manage(res);
18617}
18618
18619union_map union_set::identity() const
18620{
18621 auto res = isl_union_set_identity(copy());
18622 return manage(res);
18623}
18624
18625union_pw_multi_aff union_set::identity_union_pw_multi_aff() const
18626{
18627 auto res = isl_union_set_identity_union_pw_multi_aff(copy());
18628 return manage(res);
18629}
18630
18631union_set union_set::intersect(union_set uset2) const
18632{
18633 auto res = isl_union_set_intersect(copy(), uset2.release());
18634 return manage(res);
18635}
18636
18637union_set union_set::intersect_params(set set) const
18638{
18639 auto res = isl_union_set_intersect_params(copy(), set.release());
18640 return manage(res);
18641}
18642
18643boolean union_set::is_disjoint(const union_set &uset2) const
18644{
18645 auto res = isl_union_set_is_disjoint(get(), uset2.get());
18646 return manage(res);
18647}
18648
18649boolean union_set::is_empty() const
18650{
18651 auto res = isl_union_set_is_empty(get());
18652 return manage(res);
18653}
18654
18655boolean union_set::is_equal(const union_set &uset2) const
18656{
18657 auto res = isl_union_set_is_equal(get(), uset2.get());
18658 return manage(res);
18659}
18660
18661boolean union_set::is_params() const
18662{
18663 auto res = isl_union_set_is_params(get());
18664 return manage(res);
18665}
18666
18667boolean union_set::is_strict_subset(const union_set &uset2) const
18668{
18669 auto res = isl_union_set_is_strict_subset(get(), uset2.get());
18670 return manage(res);
18671}
18672
18673boolean union_set::is_subset(const union_set &uset2) const
18674{
18675 auto res = isl_union_set_is_subset(get(), uset2.get());
18676 return manage(res);
18677}
18678
18679union_map union_set::lex_ge_union_set(union_set uset2) const
18680{
18681 auto res = isl_union_set_lex_ge_union_set(copy(), uset2.release());
18682 return manage(res);
18683}
18684
18685union_map union_set::lex_gt_union_set(union_set uset2) const
18686{
18687 auto res = isl_union_set_lex_gt_union_set(copy(), uset2.release());
18688 return manage(res);
18689}
18690
18691union_map union_set::lex_le_union_set(union_set uset2) const
18692{
18693 auto res = isl_union_set_lex_le_union_set(copy(), uset2.release());
18694 return manage(res);
18695}
18696
18697union_map union_set::lex_lt_union_set(union_set uset2) const
18698{
18699 auto res = isl_union_set_lex_lt_union_set(copy(), uset2.release());
18700 return manage(res);
18701}
18702
18703union_set union_set::lexmax() const
18704{
18705 auto res = isl_union_set_lexmax(copy());
18706 return manage(res);
18707}
18708
18709union_set union_set::lexmin() const
18710{
18711 auto res = isl_union_set_lexmin(copy());
18712 return manage(res);
18713}
18714
18715multi_val union_set::min_multi_union_pw_aff(const multi_union_pw_aff &obj) const
18716{
18717 auto res = isl_union_set_min_multi_union_pw_aff(get(), obj.get());
18718 return manage(res);
18719}
18720
18721int union_set::n_set() const
18722{
18723 auto res = isl_union_set_n_set(get());
18724 return res;
18725}
18726
18727set union_set::params() const
18728{
18729 auto res = isl_union_set_params(copy());
18730 return manage(res);
18731}
18732
18733union_set union_set::polyhedral_hull() const
18734{
18735 auto res = isl_union_set_polyhedral_hull(copy());
18736 return manage(res);
18737}
18738
18739union_set union_set::preimage(multi_aff ma) const
18740{
18741 auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
18742 return manage(res);
18743}
18744
18745union_set union_set::preimage(pw_multi_aff pma) const
18746{
18747 auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
18748 return manage(res);
18749}
18750
18751union_set union_set::preimage(union_pw_multi_aff upma) const
18752{
18753 auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
18754 return manage(res);
18755}
18756
18757union_set union_set::product(union_set uset2) const
18758{
18759 auto res = isl_union_set_product(copy(), uset2.release());
18760 return manage(res);
18761}
18762
18763union_set union_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
18764{
18765 auto res = isl_union_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
18766 return manage(res);
18767}
18768
18769union_set union_set::remove_divs() const
18770{
18771 auto res = isl_union_set_remove_divs(copy());
18772 return manage(res);
18773}
18774
18775union_set union_set::remove_redundancies() const
18776{
18777 auto res = isl_union_set_remove_redundancies(copy());
18778 return manage(res);
18779}
18780
18781union_set union_set::reset_user() const
18782{
18783 auto res = isl_union_set_reset_user(copy());
18784 return manage(res);
18785}
18786
18787basic_set union_set::sample() const
18788{
18789 auto res = isl_union_set_sample(copy());
18790 return manage(res);
18791}
18792
18793point union_set::sample_point() const
18794{
18795 auto res = isl_union_set_sample_point(copy());
18796 return manage(res);
18797}
18798
18799union_set union_set::simple_hull() const
18800{
18801 auto res = isl_union_set_simple_hull(copy());
18802 return manage(res);
18803}
18804
18805union_set union_set::solutions() const
18806{
18807 auto res = isl_union_set_solutions(copy());
18808 return manage(res);
18809}
18810
18811union_set union_set::subtract(union_set uset2) const
18812{
18813 auto res = isl_union_set_subtract(copy(), uset2.release());
18814 return manage(res);
18815}
18816
18817union_set union_set::unite(union_set uset2) const
18818{
18819 auto res = isl_union_set_union(copy(), uset2.release());
18820 return manage(res);
18821}
18822
18823union_set union_set::universe() const
18824{
18825 auto res = isl_union_set_universe(copy());
18826 return manage(res);
18827}
18828
18829union_map union_set::unwrap() const
18830{
18831 auto res = isl_union_set_unwrap(copy());
18832 return manage(res);
18833}
18834
18835union_map union_set::wrapped_domain_map() const
18836{
18837 auto res = isl_union_set_wrapped_domain_map(copy());
18838 return manage(res);
18839}
18840
18841// implementations for isl::union_set_list
18842union_set_list manage(__isl_take isl_union_set_list *ptr) {
18843 return union_set_list(ptr);
18844}
18845union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
18846 ptr = isl_union_set_list_copy(ptr);
18847 return union_set_list(ptr);
18848}
18849
18850union_set_list::union_set_list()
18851 : ptr(nullptr) {}
18852
18853union_set_list::union_set_list(const union_set_list &obj)
18854 : ptr(nullptr)
18855{
18856 ptr = obj.copy();
18857}
18858union_set_list::union_set_list(std::nullptr_t)
18859 : ptr(nullptr) {}
18860
18861
18862union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
18863 : ptr(ptr) {}
18864
18865
18866union_set_list &union_set_list::operator=(union_set_list obj) {
18867 std::swap(this->ptr, obj.ptr);
18868 return *this;
18869}
18870
18871union_set_list::~union_set_list() {
18872 if (ptr)
18873 isl_union_set_list_free(ptr);
18874}
18875
18876__isl_give isl_union_set_list *union_set_list::copy() const & {
18877 return isl_union_set_list_copy(ptr);
18878}
18879
18880__isl_keep isl_union_set_list *union_set_list::get() const {
18881 return ptr;
18882}
18883
18884__isl_give isl_union_set_list *union_set_list::release() {
18885 isl_union_set_list *tmp = ptr;
18886 ptr = nullptr;
18887 return tmp;
18888}
18889
18890bool union_set_list::is_null() const {
18891 return ptr == nullptr;
18892}
18893union_set_list::operator bool() const {
18894 return !is_null();
18895}
18896
18897
18898ctx union_set_list::get_ctx() const {
18899 return ctx(isl_union_set_list_get_ctx(ptr));
18900}
18901
18902void union_set_list::dump() const {
18903 isl_union_set_list_dump(get());
18904}
18905
18906
18907union_set_list union_set_list::add(union_set el) const
18908{
18909 auto res = isl_union_set_list_add(copy(), el.release());
18910 return manage(res);
18911}
18912
18913union_set_list union_set_list::alloc(ctx ctx, int n)
18914{
18915 auto res = isl_union_set_list_alloc(ctx.release(), n);
18916 return manage(res);
18917}
18918
18919union_set_list union_set_list::concat(union_set_list list2) const
18920{
18921 auto res = isl_union_set_list_concat(copy(), list2.release());
18922 return manage(res);
18923}
18924
18925union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
18926{
18927 auto res = isl_union_set_list_drop(copy(), first, n);
18928 return manage(res);
18929}
18930
18931stat union_set_list::foreach(const std::function<stat(union_set)> &fn) const
18932{
18933 struct fn_data {
18934 const std::function<stat(union_set)> *func;
18935 } fn_data = { &fn };
18936 auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
18937 auto *data = static_cast<struct fn_data *>(arg_1);
18938 stat ret = (*data->func)(manage(arg_0));
18939 return ret.release();
18940 };
18941 auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
18942 return manage(res);
18943}
18944
18945union_set_list union_set_list::from_union_set(union_set el)
18946{
18947 auto res = isl_union_set_list_from_union_set(el.release());
18948 return manage(res);
18949}
18950
18951union_set union_set_list::get_at(int index) const
18952{
18953 auto res = isl_union_set_list_get_at(get(), index);
18954 return manage(res);
18955}
18956
18957union_set union_set_list::get_union_set(int index) const
18958{
18959 auto res = isl_union_set_list_get_union_set(get(), index);
18960 return manage(res);
18961}
18962
18963union_set_list union_set_list::insert(unsigned int pos, union_set el) const
18964{
18965 auto res = isl_union_set_list_insert(copy(), pos, el.release());
18966 return manage(res);
18967}
18968
18969int union_set_list::n_union_set() const
18970{
18971 auto res = isl_union_set_list_n_union_set(get());
18972 return res;
18973}
18974
18975union_set_list union_set_list::reverse() const
18976{
18977 auto res = isl_union_set_list_reverse(copy());
18978 return manage(res);
18979}
18980
18981union_set_list union_set_list::set_union_set(int index, union_set el) const
18982{
18983 auto res = isl_union_set_list_set_union_set(copy(), index, el.release());
18984 return manage(res);
18985}
18986
18987int union_set_list::size() const
18988{
18989 auto res = isl_union_set_list_size(get());
18990 return res;
18991}
18992
18993union_set_list union_set_list::swap(unsigned int pos1, unsigned int pos2) const
18994{
18995 auto res = isl_union_set_list_swap(copy(), pos1, pos2);
18996 return manage(res);
18997}
18998
18999union_set union_set_list::unite() const
19000{
19001 auto res = isl_union_set_list_union(copy());
19002 return manage(res);
19003}
19004
19005// implementations for isl::val
19006val manage(__isl_take isl_val *ptr) {
19007 return val(ptr);
19008}
19009val manage_copy(__isl_keep isl_val *ptr) {
19010 ptr = isl_val_copy(ptr);
19011 return val(ptr);
19012}
19013
19014val::val()
19015 : ptr(nullptr) {}
19016
19017val::val(const val &obj)
19018 : ptr(nullptr)
19019{
19020 ptr = obj.copy();
19021}
19022val::val(std::nullptr_t)
19023 : ptr(nullptr) {}
19024
19025
19026val::val(__isl_take isl_val *ptr)
19027 : ptr(ptr) {}
19028
19029val::val(ctx ctx, const std::string &str)
19030{
19031 auto res = isl_val_read_from_str(ctx.release(), str.c_str());
19032 ptr = res;
19033}
19034val::val(ctx ctx, long i)
19035{
19036 auto res = isl_val_int_from_si(ctx.release(), i);
19037 ptr = res;
19038}
19039
19040val &val::operator=(val obj) {
19041 std::swap(this->ptr, obj.ptr);
19042 return *this;
19043}
19044
19045val::~val() {
19046 if (ptr)
19047 isl_val_free(ptr);
19048}
19049
19050__isl_give isl_val *val::copy() const & {
19051 return isl_val_copy(ptr);
19052}
19053
19054__isl_keep isl_val *val::get() const {
19055 return ptr;
19056}
19057
19058__isl_give isl_val *val::release() {
19059 isl_val *tmp = ptr;
19060 ptr = nullptr;
19061 return tmp;
19062}
19063
19064bool val::is_null() const {
19065 return ptr == nullptr;
19066}
19067val::operator bool() const {
19068 return !is_null();
19069}
19070
19071
19072ctx val::get_ctx() const {
19073 return ctx(isl_val_get_ctx(ptr));
19074}
19075std::string val::to_str() const {
19076 char *Tmp = isl_val_to_str(get());
19077 if (!Tmp)
19078 return "";
19079 std::string S(Tmp);
19080 free(Tmp);
19081 return S;
19082}
19083
19084
19085void val::dump() const {
19086 isl_val_dump(get());
19087}
19088
19089
19090val val::abs() const
19091{
19092 auto res = isl_val_abs(copy());
19093 return manage(res);
19094}
19095
19096boolean val::abs_eq(const val &v2) const
19097{
19098 auto res = isl_val_abs_eq(get(), v2.get());
19099 return manage(res);
19100}
19101
19102val val::add(val v2) const
19103{
19104 auto res = isl_val_add(copy(), v2.release());
19105 return manage(res);
19106}
19107
19108val val::add_ui(unsigned long v2) const
19109{
19110 auto res = isl_val_add_ui(copy(), v2);
19111 return manage(res);
19112}
19113
19114val val::ceil() const
19115{
19116 auto res = isl_val_ceil(copy());
19117 return manage(res);
19118}
19119
19120int val::cmp_si(long i) const
19121{
19122 auto res = isl_val_cmp_si(get(), i);
19123 return res;
19124}
19125
19126val val::div(val v2) const
19127{
19128 auto res = isl_val_div(copy(), v2.release());
19129 return manage(res);
19130}
19131
19132val val::div_ui(unsigned long v2) const
19133{
19134 auto res = isl_val_div_ui(copy(), v2);
19135 return manage(res);
19136}
19137
19138boolean val::eq(const val &v2) const
19139{
19140 auto res = isl_val_eq(get(), v2.get());
19141 return manage(res);
19142}
19143
19144val val::floor() const
19145{
19146 auto res = isl_val_floor(copy());
19147 return manage(res);
19148}
19149
19150val val::gcd(val v2) const
19151{
19152 auto res = isl_val_gcd(copy(), v2.release());
19153 return manage(res);
19154}
19155
19156boolean val::ge(const val &v2) const
19157{
19158 auto res = isl_val_ge(get(), v2.get());
19159 return manage(res);
19160}
19161
19162uint32_t val::get_hash() const
19163{
19164 auto res = isl_val_get_hash(get());
19165 return res;
19166}
19167
19168long val::get_num_si() const
19169{
19170 auto res = isl_val_get_num_si(get());
19171 return res;
19172}
19173
19174boolean val::gt(const val &v2) const
19175{
19176 auto res = isl_val_gt(get(), v2.get());
19177 return manage(res);
19178}
19179
19180boolean val::gt_si(long i) const
19181{
19182 auto res = isl_val_gt_si(get(), i);
19183 return manage(res);
19184}
19185
19186val val::infty(ctx ctx)
19187{
19188 auto res = isl_val_infty(ctx.release());
19189 return manage(res);
19190}
19191
19192val val::int_from_ui(ctx ctx, unsigned long u)
19193{
19194 auto res = isl_val_int_from_ui(ctx.release(), u);
19195 return manage(res);
19196}
19197
19198val val::inv() const
19199{
19200 auto res = isl_val_inv(copy());
19201 return manage(res);
19202}
19203
19204boolean val::is_divisible_by(const val &v2) const
19205{
19206 auto res = isl_val_is_divisible_by(get(), v2.get());
19207 return manage(res);
19208}
19209
19210boolean val::is_infty() const
19211{
19212 auto res = isl_val_is_infty(get());
19213 return manage(res);
19214}
19215
19216boolean val::is_int() const
19217{
19218 auto res = isl_val_is_int(get());
19219 return manage(res);
19220}
19221
19222boolean val::is_nan() const
19223{
19224 auto res = isl_val_is_nan(get());
19225 return manage(res);
19226}
19227
19228boolean val::is_neg() const
19229{
19230 auto res = isl_val_is_neg(get());
19231 return manage(res);
19232}
19233
19234boolean val::is_neginfty() const
19235{
19236 auto res = isl_val_is_neginfty(get());
19237 return manage(res);
19238}
19239
19240boolean val::is_negone() const
19241{
19242 auto res = isl_val_is_negone(get());
19243 return manage(res);
19244}
19245
19246boolean val::is_nonneg() const
19247{
19248 auto res = isl_val_is_nonneg(get());
19249 return manage(res);
19250}
19251
19252boolean val::is_nonpos() const
19253{
19254 auto res = isl_val_is_nonpos(get());
19255 return manage(res);
19256}
19257
19258boolean val::is_one() const
19259{
19260 auto res = isl_val_is_one(get());
19261 return manage(res);
19262}
19263
19264boolean val::is_pos() const
19265{
19266 auto res = isl_val_is_pos(get());
19267 return manage(res);
19268}
19269
19270boolean val::is_rat() const
19271{
19272 auto res = isl_val_is_rat(get());
19273 return manage(res);
19274}
19275
19276boolean val::is_zero() const
19277{
19278 auto res = isl_val_is_zero(get());
19279 return manage(res);
19280}
19281
19282boolean val::le(const val &v2) const
19283{
19284 auto res = isl_val_le(get(), v2.get());
19285 return manage(res);
19286}
19287
19288boolean val::lt(const val &v2) const
19289{
19290 auto res = isl_val_lt(get(), v2.get());
19291 return manage(res);
19292}
19293
19294val val::max(val v2) const
19295{
19296 auto res = isl_val_max(copy(), v2.release());
19297 return manage(res);
19298}
19299
19300val val::min(val v2) const
19301{
19302 auto res = isl_val_min(copy(), v2.release());
19303 return manage(res);
19304}
19305
19306val val::mod(val v2) const
19307{
19308 auto res = isl_val_mod(copy(), v2.release());
19309 return manage(res);
19310}
19311
19312val val::mul(val v2) const
19313{
19314 auto res = isl_val_mul(copy(), v2.release());
19315 return manage(res);
19316}
19317
19318val val::mul_ui(unsigned long v2) const
19319{
19320 auto res = isl_val_mul_ui(copy(), v2);
19321 return manage(res);
19322}
19323
19324size_t val::n_abs_num_chunks(size_t size) const
19325{
19326 auto res = isl_val_n_abs_num_chunks(get(), size);
19327 return res;
19328}
19329
19330val val::nan(ctx ctx)
19331{
19332 auto res = isl_val_nan(ctx.release());
19333 return manage(res);
19334}
19335
19336boolean val::ne(const val &v2) const
19337{
19338 auto res = isl_val_ne(get(), v2.get());
19339 return manage(res);
19340}
19341
19342val val::neg() const
19343{
19344 auto res = isl_val_neg(copy());
19345 return manage(res);
19346}
19347
19348val val::neginfty(ctx ctx)
19349{
19350 auto res = isl_val_neginfty(ctx.release());
19351 return manage(res);
19352}
19353
19354val val::negone(ctx ctx)
19355{
19356 auto res = isl_val_negone(ctx.release());
19357 return manage(res);
19358}
19359
19360val val::one(ctx ctx)
19361{
19362 auto res = isl_val_one(ctx.release());
19363 return manage(res);
19364}
19365
19366val val::pow2() const
19367{
19368 auto res = isl_val_pow2(copy());
19369 return manage(res);
19370}
19371
19372val val::set_si(long i) const
19373{
19374 auto res = isl_val_set_si(copy(), i);
19375 return manage(res);
19376}
19377
19378int val::sgn() const
19379{
19380 auto res = isl_val_sgn(get());
19381 return res;
19382}
19383
19384val val::sub(val v2) const
19385{
19386 auto res = isl_val_sub(copy(), v2.release());
19387 return manage(res);
19388}
19389
19390val val::sub_ui(unsigned long v2) const
19391{
19392 auto res = isl_val_sub_ui(copy(), v2);
19393 return manage(res);
19394}
19395
19396val val::trunc() const
19397{
19398 auto res = isl_val_trunc(copy());
19399 return manage(res);
19400}
19401
19402val val::zero(ctx ctx)
19403{
19404 auto res = isl_val_zero(ctx.release());
19405 return manage(res);
19406}
19407
19408// implementations for isl::val_list
19409val_list manage(__isl_take isl_val_list *ptr) {
19410 return val_list(ptr);
19411}
19412val_list manage_copy(__isl_keep isl_val_list *ptr) {
19413 ptr = isl_val_list_copy(ptr);
19414 return val_list(ptr);
19415}
19416
19417val_list::val_list()
19418 : ptr(nullptr) {}
19419
19420val_list::val_list(const val_list &obj)
19421 : ptr(nullptr)
19422{
19423 ptr = obj.copy();
19424}
19425val_list::val_list(std::nullptr_t)
19426 : ptr(nullptr) {}
19427
19428
19429val_list::val_list(__isl_take isl_val_list *ptr)
19430 : ptr(ptr) {}
19431
19432
19433val_list &val_list::operator=(val_list obj) {
19434 std::swap(this->ptr, obj.ptr);
19435 return *this;
19436}
19437
19438val_list::~val_list() {
19439 if (ptr)
19440 isl_val_list_free(ptr);
19441}
19442
19443__isl_give isl_val_list *val_list::copy() const & {
19444 return isl_val_list_copy(ptr);
19445}
19446
19447__isl_keep isl_val_list *val_list::get() const {
19448 return ptr;
19449}
19450
19451__isl_give isl_val_list *val_list::release() {
19452 isl_val_list *tmp = ptr;
19453 ptr = nullptr;
19454 return tmp;
19455}
19456
19457bool val_list::is_null() const {
19458 return ptr == nullptr;
19459}
19460val_list::operator bool() const {
19461 return !is_null();
19462}
19463
19464
19465ctx val_list::get_ctx() const {
19466 return ctx(isl_val_list_get_ctx(ptr));
19467}
19468
19469void val_list::dump() const {
19470 isl_val_list_dump(get());
19471}
19472
19473
19474val_list val_list::add(val el) const
19475{
19476 auto res = isl_val_list_add(copy(), el.release());
19477 return manage(res);
19478}
19479
19480val_list val_list::alloc(ctx ctx, int n)
19481{
19482 auto res = isl_val_list_alloc(ctx.release(), n);
19483 return manage(res);
19484}
19485
19486val_list val_list::concat(val_list list2) const
19487{
19488 auto res = isl_val_list_concat(copy(), list2.release());
19489 return manage(res);
19490}
19491
19492val_list val_list::drop(unsigned int first, unsigned int n) const
19493{
19494 auto res = isl_val_list_drop(copy(), first, n);
19495 return manage(res);
19496}
19497
19498stat val_list::foreach(const std::function<stat(val)> &fn) const
19499{
19500 struct fn_data {
19501 const std::function<stat(val)> *func;
19502 } fn_data = { &fn };
19503 auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
19504 auto *data = static_cast<struct fn_data *>(arg_1);
19505 stat ret = (*data->func)(manage(arg_0));
19506 return ret.release();
19507 };
19508 auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
19509 return manage(res);
19510}
19511
19512val_list val_list::from_val(val el)
19513{
19514 auto res = isl_val_list_from_val(el.release());
19515 return manage(res);
19516}
19517
19518val val_list::get_at(int index) const
19519{
19520 auto res = isl_val_list_get_at(get(), index);
19521 return manage(res);
19522}
19523
19524val val_list::get_val(int index) const
19525{
19526 auto res = isl_val_list_get_val(get(), index);
19527 return manage(res);
19528}
19529
19530val_list val_list::insert(unsigned int pos, val el) const
19531{
19532 auto res = isl_val_list_insert(copy(), pos, el.release());
19533 return manage(res);
19534}
19535
19536int val_list::n_val() const
19537{
19538 auto res = isl_val_list_n_val(get());
19539 return res;
19540}
19541
19542val_list val_list::reverse() const
19543{
19544 auto res = isl_val_list_reverse(copy());
19545 return manage(res);
19546}
19547
19548val_list val_list::set_val(int index, val el) const
19549{
19550 auto res = isl_val_list_set_val(copy(), index, el.release());
19551 return manage(res);
19552}
19553
19554int val_list::size() const
19555{
19556 auto res = isl_val_list_size(get());
19557 return res;
19558}
19559
19560val_list val_list::swap(unsigned int pos1, unsigned int pos2) const
19561{
19562 auto res = isl_val_list_swap(copy(), pos1, pos2);
19563 return manage(res);
19564}
19565
19566// implementations for isl::vec
19567vec manage(__isl_take isl_vec *ptr) {
19568 return vec(ptr);
19569}
19570vec manage_copy(__isl_keep isl_vec *ptr) {
19571 ptr = isl_vec_copy(ptr);
19572 return vec(ptr);
19573}
19574
19575vec::vec()
19576 : ptr(nullptr) {}
19577
19578vec::vec(const vec &obj)
19579 : ptr(nullptr)
19580{
19581 ptr = obj.copy();
19582}
19583vec::vec(std::nullptr_t)
19584 : ptr(nullptr) {}
19585
19586
19587vec::vec(__isl_take isl_vec *ptr)
19588 : ptr(ptr) {}
19589
19590
19591vec &vec::operator=(vec obj) {
19592 std::swap(this->ptr, obj.ptr);
19593 return *this;
19594}
19595
19596vec::~vec() {
19597 if (ptr)
19598 isl_vec_free(ptr);
19599}
19600
19601__isl_give isl_vec *vec::copy() const & {
19602 return isl_vec_copy(ptr);
19603}
19604
19605__isl_keep isl_vec *vec::get() const {
19606 return ptr;
19607}
19608
19609__isl_give isl_vec *vec::release() {
19610 isl_vec *tmp = ptr;
19611 ptr = nullptr;
19612 return tmp;
19613}
19614
19615bool vec::is_null() const {
19616 return ptr == nullptr;
19617}
19618vec::operator bool() const {
19619 return !is_null();
19620}
19621
19622
19623ctx vec::get_ctx() const {
19624 return ctx(isl_vec_get_ctx(ptr));
19625}
19626
19627void vec::dump() const {
19628 isl_vec_dump(get());
19629}
19630
19631
19632vec vec::add(vec vec2) const
19633{
19634 auto res = isl_vec_add(copy(), vec2.release());
19635 return manage(res);
19636}
19637
19638vec vec::add_els(unsigned int n) const
19639{
19640 auto res = isl_vec_add_els(copy(), n);
19641 return manage(res);
19642}
19643
19644vec vec::alloc(ctx ctx, unsigned int size)
19645{
19646 auto res = isl_vec_alloc(ctx.release(), size);
19647 return manage(res);
19648}
19649
19650vec vec::ceil() const
19651{
19652 auto res = isl_vec_ceil(copy());
19653 return manage(res);
19654}
19655
19656vec vec::clr() const
19657{
19658 auto res = isl_vec_clr(copy());
19659 return manage(res);
19660}
19661
19662int vec::cmp_element(const vec &vec2, int pos) const
19663{
19664 auto res = isl_vec_cmp_element(get(), vec2.get(), pos);
19665 return res;
19666}
19667
19668vec vec::concat(vec vec2) const
19669{
19670 auto res = isl_vec_concat(copy(), vec2.release());
19671 return manage(res);
19672}
19673
19674vec vec::drop_els(unsigned int pos, unsigned int n) const
19675{
19676 auto res = isl_vec_drop_els(copy(), pos, n);
19677 return manage(res);
19678}
19679
19680vec vec::extend(unsigned int size) const
19681{
19682 auto res = isl_vec_extend(copy(), size);
19683 return manage(res);
19684}
19685
19686val vec::get_element_val(int pos) const
19687{
19688 auto res = isl_vec_get_element_val(get(), pos);
19689 return manage(res);
19690}
19691
19692vec vec::insert_els(unsigned int pos, unsigned int n) const
19693{
19694 auto res = isl_vec_insert_els(copy(), pos, n);
19695 return manage(res);
19696}
19697
19698vec vec::insert_zero_els(unsigned int pos, unsigned int n) const
19699{
19700 auto res = isl_vec_insert_zero_els(copy(), pos, n);
19701 return manage(res);
19702}
19703
19704boolean vec::is_equal(const vec &vec2) const
19705{
19706 auto res = isl_vec_is_equal(get(), vec2.get());
19707 return manage(res);
19708}
19709
19710vec vec::mat_product(mat mat) const
19711{
19712 auto res = isl_vec_mat_product(copy(), mat.release());
19713 return manage(res);
19714}
19715
19716vec vec::move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const
19717{
19718 auto res = isl_vec_move_els(copy(), dst_col, src_col, n);
19719 return manage(res);
19720}
19721
19722vec vec::neg() const
19723{
19724 auto res = isl_vec_neg(copy());
19725 return manage(res);
19726}
19727
19728vec vec::set_element_si(int pos, int v) const
19729{
19730 auto res = isl_vec_set_element_si(copy(), pos, v);
19731 return manage(res);
19732}
19733
19734vec vec::set_element_val(int pos, val v) const
19735{
19736 auto res = isl_vec_set_element_val(copy(), pos, v.release());
19737 return manage(res);
19738}
19739
19740vec vec::set_si(int v) const
19741{
19742 auto res = isl_vec_set_si(copy(), v);
19743 return manage(res);
19744}
19745
19746vec vec::set_val(val v) const
19747{
19748 auto res = isl_vec_set_val(copy(), v.release());
19749 return manage(res);
19750}
19751
19752int vec::size() const
19753{
19754 auto res = isl_vec_size(get());
19755 return res;
19756}
19757
19758vec vec::sort() const
19759{
19760 auto res = isl_vec_sort(copy());
19761 return manage(res);
19762}
19763
19764vec vec::zero(ctx ctx, unsigned int size)
19765{
19766 auto res = isl_vec_zero(ctx.release(), size);
19767 return manage(res);
19768}
19769
19770vec vec::zero_extend(unsigned int size) const
19771{
19772 auto res = isl_vec_zero_extend(copy(), size);
19773 return manage(res);
19774}
19775} // namespace noexceptions
19776} // namespace isl
19777
19778#endif /* ISL_CPP_CHECKED */
19779